redis支持的數據類型

   redis存儲的數據有”結構”,對於memcached來說,存儲的數據,只有1種類型--”字符串”,而redis則可以存儲字符串,鏈表,哈希結構,集合,有序集合.


字符串類型

添加,獲取,

set key value [ex秒數] / [px毫秒數] [nx] /[xx]

key是字符串的名字.

mset  multi set ,一次性設置多個鍵值

例: mset key1v1 key2 v2 ....

get key 

特點:

setbit  key offset value

這是在位的角度做的操作。

設置offset對應二進制位上的值  大小寫的改變

返回: 該位上的舊值

注意:

1:如果offset過大,則會在中間填充0,

2: offset最大大到多少

3:offset最大2^32-1,可推出最大的的字符串爲512M

bitop operation destkey key1 [key2 ...]

這個是命令的互補操作。

對key1,key2..keyN作operation,並將結果保存到 destkey 上。

operation 可以是 AND 、 OR 、 NOT 、 XOR

redis 127.0.0.1:6379> setbit lower 7 0

(integer) 0

redis 127.0.0.1:6379> setbit lower 2 1

(integer) 0

redis 127.0.0.1:6379> get lower

" "

redis 127.0.0.1:6379> set char Q

OK

redis 127.0.0.1:6379> get char

"Q"

redis 127.0.0.1:6379> bitop or char charlower

(integer) 1

redis 127.0.0.1:6379> get char

"q"

注意: 對於NOT操作, key不能多個


鏈表結構:

創建

lpush key value 

key就是鏈表的名字

刪除

rpop key

作用: 返回並刪除鏈表尾元素

lrem key count value

作用: 從key鏈表中刪除 value值

注: 刪除count的絕對值個value後結束

Count>0 從表頭刪除

Count<0 從表尾刪除


集合set

創建:

sadd key  value1 value2

作用: 往集合key中增加元素,key是結合的名稱

set的特點

sinter  key1 key2 key3

作用: 求出key1 key2 key3 三個集合中的交集,並返回

redis 127.0.0.1:6379> sadd s1 0 2 4 6

(integer) 4

redis 127.0.0.1:6379> sadd s2 1 2 3 4

(integer) 4

redis 127.0.0.1:6379> sadd s3 4 8 9 12

(integer) 4

redis 127.0.0.1:6379> sinter s1 s2 s3

1) "4"

redis 127.0.0.1:6379> sinter s3 s1 s2

1) "4"

sinterstore dest key1 key2 key3

作用: 求出key1 key2 key3 三個集合中的交集,並賦給dest

suion key1 key2.. Keyn

作用: 求出key1 key2 keyn的並集,並返回

sdiff key1 key2 key3

作用: 求出key1與key2 key3的差集

即key1-key2-key3 


order set 有序集合

創建

zadd key score1 value1 score2 value2 ..

添加元素,是排序的,名次是從0名開始的。key是創建的有序集合的名稱。

redis 127.0.0.1:6379> zadd stu  18 lily 19 hmm 20 lilei 21 lilei

(integer) 3


Hash

創建:

hset key field value

作用: 把key中 filed域的值設爲value

注:如果沒有field域,直接添加,如果有,則覆蓋原field域的值

hmset key field1 value1 [field2 value2 field3 value3......fieldn valuen]

作用: 設置field1->N 個域, 對應的值是value1->N

(對應PHP理解爲  $key = array(file1=>value1,field2=>value2 ....fieldN=>valueN))


注意:

這幾種,數據結果,我們課可以結合java基礎中的幾種數據結構來認識。


使用: 就是對於傳統型的數據庫如果使用kv的設計使用什麼類型的數據結構,這是根絕數據的使用情況和數據結構的特點來決定的。
我在加深一下認識在詳解。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章