Redis には 5 つの基本データ構造があります: String (文字列)、list (リスト)、set (セット)、hash (ハッシュ)、zset (Ordered Collection##) #)
String string文字列型は、Java 言語の ArrayList (数値リスト) に似た、Redis 値の最も単純なデータ構造ですが、Redis String では動的文字列ですRedis の文字列は、冗長スペースを事前に割り当てる方法を使用します#[画像のアップロードに失敗しました...(image-724c60-1537973556456)]
set & get
>set keyname test OK >get keyname test //key如果存在就返回0 >setnx keyname test 0 >exists keyname >del keyname 1 //批量设置 >mset key1 test1 key2 test2 OK //批量获取 >mget key1 key2 1) test1 2) test2
キーの有効期限
//设置5s后过期 >expire keyname 5 //setex是expire和set的复合写法 >setex keyname 5 test OK //5s后查询 >get keyname NULL
count
ps: 値が数値の場合、incr と incrby を使用してカウントできます。>set num 10 OK //incr默认加1 >incr num 11 //incrby后面要加上数字 >incrby num ERR wrong number of arguments for 'incrby' command //正确计数 >incrby num 5 16
##これがリンクリストに似ているのはなぜですか? Redis リストはリンクリストと同じではないためです。実際にはクイック リスト (クイックリスト) の一種です。リストの構造は次のとおりです:
双方向ポインタ
で構成されていますが、リンクされたリストであることがわかります。には、prev 実行と Next 実行という 2 つのポインタがあり、これがクイック リストとリンクリストの違いです。PS: では、redis が設計されたとき、なぜ双方向ポインターに変更されたのでしょうか?リンクされたリストのように、prev と next の 2 つのポインターが使用される場合、トラバーサルも実現できますが、双方向ポインターには明らかに利点があります。つまり、占有するメモリ領域が比較的少ないということです。
キューとスタック/* 队列:First in first out */ //加两个value >rpush keynames key1 key2 2 //计算 >llen keynames 2 >lpop keynames key1 >lpop keynames key2 //rpush会自动过期的 >rpop keynames NULL /* 栈:First in last out */ //同样,加两个元素 >rpush keynames key1 key2 2 >rpop keynames key2 >rpop keynames key1
gradual## が採用されます。 # メソッド 、なぜプログレッシブと呼ばれるのでしょうか? Redis はすべてをリロードするのではなく、古い辞書と新しい辞書を保存し、スケジュールされたタスクを使用して古いハッシュのデータを新しいハッシュに移動し、移動後にハッシュ メモリ領域をリサイクルするためです。
辞書 (ハッシュ) の配列 リンク構造の追加: [画像のアップロードに失敗しました...(image-f5660f-1537973556457)]
>hset keynames key1 "test1" 1 >hset keynames key2 "test2" 1 //批量set >hmset keynames key1 "test1" key2 "test2" OK //获取key1的值 >hget keynames key1 test1 //获取hash为keynames的长度 >hlen keynames 2 //获取全部 >hgetall keynames 1) key1 2) test1 3) key2 4) test2
redis とハッシュセットのセットJava 言語の型は同じ種類の
>sadd keynames key1 1 //key1已经加过了,所以返回1 >sadd keynames key1 key2 1 >smembers keynames 1) key2 2) key1 //查询某个key是否存在,相当与contains >sismember keynames key1 1 //相当于count >scard keynames 2 //随意弹出key1 >spop keynames key1
Ordered set zSetOrdered set は Redis でより特徴的で、SortedSet と HashMap の組み合わせに似ています。その内部実装は、ジャンプ リストと呼ばれるデータ構造です。一方で、順序付きセットはセットであるため、各要素は一意であり、各値にスコアを割り当て、このスコアに従って並べ替えることができます。スコアは権限並べ替え識別子に相当します。
//9.0是score也就是权重 >zadd keyname 9.0 math 1 >zadd keyname 9.2 history 1 //顺序 >zrange keyname 0 -1 1) history 2) math //逆序 >zrevrange keyname 0 -1 1) math 2) history //相当于count() >zcard keyname 2 获取指定key的score >zscore keyname math 9
ジャンプ リスト TODO
以上が基本的なデータ構造を学習する Redisの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。