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的设计使用什么类型的数据结构,这是根绝数据的使用情况和数据结构的特点来决定的。
我在加深一下认识在详解。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章