冒険Redisの深さ(7) - 一般的な操作と基本的なデータ構造

基本的なコマンド

0.通用命令

// 登陆redis客户端
redis-cli -h ipAddress -p port -a password
// 查看redis信息
info <memory>
// 尝试连接
ping
// 查看key是否存在
exists key 
// 设置key的过期时间(秒)
expire key seconds
// 设置key的过期时间(毫秒) 
pexpire key millseconds
// 通过正则表达式查询key
keys pattern
// 将key移到其他db
move key dbName
// 取消过期时间
persist key
// 查看key的过期时间(秒)
ttl key
// 查看key的过期时间(毫秒)
pttl key
// 随机返回一个key
randomkey
// 重命名key
rename oldKeyName newKeyName
// 查看key的类型
type key
// 删除key
del key

1.string基本的なコマンド

バッファとホットドメインを達成するために使用される単純な論理データ列、および分散ロックを実現。

// 添加key和value
set key value
// 获取key的value
get key
// 如果key不存在则添加
setnx key value 
// 添加key并设置过期时间
setex key value
// 在key不存在时添加key并设置过期时间
set key value ex expireTime nx
// 批量添加key-value
mset key1 value1 key2 value2 ...
// 获取key的value并设置新的value
getset key newValue
// 批量获取key
mget key1 key2 ...
// 查看key的value长度
strlen key
// 自增key的value
incr key
// 增量递增key的value
incrby key increment
// 自减key
decr key 
// 增量递减key的value
decrby key decrement
// 在key的value之后追加
append key value

基本的なコマンド2.list

blpop brpopを使用するか、よりシンプルのブロッキングキューを達成することができ、うまくスタックやキューなどとして、普通株式のリストを制限するには

// 右push
rpush listName v1 v2 v3
// 左push
lpush listName v1 v2 v3
// 右pop
rpop listName
// 左pop
lpop listName
// 在等待时间内阻塞左读取
blpop listName timeOut
// 在等待时间内阻塞右读取
brpop listName timeOut
// 查看长度
llen listName
// 遍历
lrange key startIndex endIndex
// 修改指定位置的元素
lset listName index value
// 删除指定位置的元素
lrem ket count value
// 将制定位置的链表截取出来替代原链表
ltrim key startIndex endIndex

基本的なコマンド3.hash

共通のハッシュと、このようなキーストレージ学生証の使用などの関係主体を、保存、およびフィールド名と年齢と名前と年齢を格納します。同じフィールドでは、文字列のハッシュデータストアを交換することをお勧めします

// 添加key-filed-value对
hset key field value
// 批量添加
mhset key filed1 value1 field2 value2 ...
// 获取key-field的值
hget key field
// 批量获取key-field的值
hmget key field1 field2...
// 查看key的field数
hlen key
// 获取到key的所有field和值
hkeys key
// 获取到key的所有field和值
hgetall key
// 批量获取key的field
hmget key field1 field2 ...

基本的なコマンド4.set

(デエンファシス機能を実現し、ハッシュに基づいてセット自体に起因する)重量の数に共通の友人と親指を達成するために、人気のバディ関係のコレクションや他の

// 在集合中添加元素
sadd key value1 value2 ...
// 获取集合中元素的个数
scard key
// 查看集合1中相对于集合1的差集
sdiff key1 key2
// 查看集合1与2的交集
sinter key1 key2
// 查看集合1与2的并集
sunion key1 key2
// 查看member是否为key的元素
sismember key member
// 获取key的所有元素
smembers key
// smove key1 key2 member
将key1中的member移动到key2中
// spop key
移除并获取key的随机元素
// srem key member1 member2 ...

基本的なコマンドを5.zset

順序付きセットは、多くの場合、リアルタイムのランキングを達成するために使用順位ので、リアルタイムでの順序付けのための強い需要を必要としています

// 在有序集合中添加多个带权重的元素(或修改)
zadd key score1 value1 score2 value2 ...
// 获取集合中的元素个数
zcard key
// 获取集合中制定权重范围的元素个数
zcount key score1 score2
// 增量递增集合中某个元素的权重
zincrby key increment value
// 以权重为排序返回特定权重区间的值和对应的权重
zrangebyscore key score0 score1 withscores
// 查询特定元素的排名(通过权重排序)
zrank key value
// 删除集合中指定元素
zrem key value0 value1 ...
// zrembyscore key score0 score1
删除指定权重区间的元素
// 查询指定权重区间的元素和权重「升序」 
zrevrange key score0 score1 withscores
// 查看指定元素的排名「升序」
zrevrank key value
// 查询指定成员的权重
zscore key value
// 区两个集合的并集并且存放在第三个集合中
zunionstore key3 2 key1 key2

達成するために、データ型のII。概要

1.string、リスト、ハッシュ、セットは、基礎となるデータ構造をZSET

  1. JavaのArrayListに同様の基礎となる文字列、バイト配列(長さTパラダイムの変更がスペースを節約するために、バイトまたはショートに初期化されてもよい)のサイズは文字列変数である、に基づきます
  2. 下のリストは、JavaのLinkedListで同様の二重にリンクされたリストであり、
  3. +基礎となるハッシュリンクされたリストは、アレイは、JavaのHashMapと同様競合ファスナーを解決する方法を用いて、あります
  4. それは繰り返すことはできませんので、基本的なハッシュは、設定値がキーのハッシュで、設定されています
  5. データが128未満である場合、リストを圧縮して格納されている、ことを底ジャンプテーブルをZSET

事業の拡大を2.string

容量、lenの数よりも電流容量の大きなを作成するときに文字列が最大容量が割り当てられている、拡張のために動作します。

  1. 場合は、文字列のサイズ<1メガバイト、各逓倍拡大
  2. 場合は、文字列> = 1メガバイト、それぞれの大きさ1メガバイトずつ拡張して、最大512Mを超えることはできません
    (スペースを節約するために、使用される文字列のサイズは、同時に異なる形式で格納されていません)

3.hashファスナー方式、プログレッシブ焼き直し、ビスハッシュテーブル

設計のハッシュは、焼き直しの総量、のすべてのインデックスと新しい配列に新しいインデックス値のハッシュ値を再計算し、しかしとしてハッシュマップとは異なり、膨張している、非常に巧妙です2つのハッシュ構造haashtableの存在、古いものと新しいもの:パフォーマンスの最適化を実現することを目的プログレッシブ焼き直し。拡張が発生した場合、残りは古いハッシュテーブルに残っている間、ハッシュテーブルの新しい焼き直しの最初の部分は、残りのデータは、タイマー後の動作に転送されるか、徐々に新しいハッシュに転送再テーブル

4.zsetなぜ基本的な実装として、ジャンプテーブル

ZSETが秩序を確認する必要があり、2つのオプションがあり、最初のものが整然と配列されているので、この方式は秩序挿入二分法を行うことができるが、必要なダイナミック膨張の大きさを考慮して、アレイを使用することができない;第二種ソートされたリンクリスト、サイズの動的拡張の使用であるが、迅速に挿入ポイントを見つけることができない;第三のジャンプテーブルを採用し、これは、データを挿入するO(LOGN)時間計算順序を達成するために、迅速に動的拡張の挿入ポイントとしての利点を見つけてリストへの結合の規則配列であり、許容します

TIPS:圧縮が基礎となるデータ構造のリストとして使用する場合の要素の数が128未満ZSETあります。

309元記事公開 ウォンの賞賛205 ビューに30万+を

おすすめ

転載: blog.csdn.net/pbrlovejava/article/details/103851572