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基礎中的幾種數據結構來認識。