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基础中的几种数据结构来认识。