Redis基础学习(3)
五大数据类型之三
Set(集合)
set中的值不能重读
添加和判断
127.0.0.1:6379> sadd set "hello" #set里添加
(integer) 1
127.0.0.1:6379> sadd set "111222"
(integer) 1
127.0.0.1:6379> sadd set "222333"
(integer) 1
127.0.0.1:6379> SMEMBERS set #查看
1) "222333"
2) "111222"
3) "hello"
127.0.0.1:6379> SISMEMBER set hello #判断是否存在
(integer) 1
127.0.0.1:6379> SISMEMBER set re
(integer) 0
移除
127.0.0.1:6379> scard set #查看集合中的个数
(integer) 3
127.0.0.1:6379> srem set 111222 #移除集合中的指定元素
(integer) 1
127.0.0.1:6379> scard set
(integer) 2
127.0.0.1:6379> SMEMBERS set
1) "222333"
2) "hello"
随机抽取数据
127.0.0.1:6379> SMEMBERS set
1) "222333"
2) "hello"
127.0.0.1:6379> SRANDMEMBER set #随机抽取一个
"222333"
127.0.0.1:6379> SRANDMEMBER set
"222333"
127.0.0.1:6379> SRANDMEMBER set
"hello"
127.0.0.1:6379> SRANDMEMBER set 2 #随机抽取指定个数的元素
1) "222333"
2) "hello"
随机弹出数据
127.0.0.1:6379> SMEMBERS set
1) "333444"
2) "222333"
3) "hello"
127.0.0.1:6379> spop set #随机删除set集合中的元素
"222333"
127.0.0.1:6379> SMEMBERS set
1) "333444"
2) "hello"
移动指定的元素到另一个集合中
127.0.0.1:6379> sadd set "hello"
(integer) 1
127.0.0.1:6379> sadd set "fdfdfd"
(integer) 1
127.0.0.1:6379> sadd set "fdjkfd"
(integer) 1
127.0.0.1:6379> sadd sad "ejrek"
(integer) 1
127.0.0.1:6379> smove set sad "hello"
(integer) 1
127.0.0.1:6379> SMEMBERS set
1) "fdjkfd"
2) "fdfdfd"
127.0.0.1:6379> SMEMBERS sad
1) "ejrek"
2) "hello"
差集,交集,并集
- 差集 sdiff
- 交集 sinter
- 并集 sunion
127.0.0.1:6379> sadd key 11
(integer) 1
127.0.0.1:6379> sadd key 22
(integer) 1
127.0.0.1:6379> sadd key 33
(integer) 1
127.0.0.1:6379> sadd key 44
(integer) 1
127.0.0.1:6379> sadd key1 55
(integer) 1
127.0.0.1:6379> sadd key1 66
(integer) 1
127.0.0.1:6379> sadd key1 77
(integer) 1
127.0.0.1:6379> sadd key1 11
(integer) 1
127.0.0.1:6379> sdiff key key1 #差集
1) "22"
2) "33"
3) "44"
127.0.0.1:6379> sinter key key1 #交集
1) "11"
127.0.0.1:6379> sunion key key1 #并集
1) "11"
2) "22"
3) "33"
4) "44"
5) "55"
6) "66"
7) "77"
Hash
创建和查看
Map集合,key-value,key-map map集合,和string类型没有区别。
格式:set hash field “111”
127.0.0.1:6379> hset hash field cccc #设置一个值
(integer) 1
127.0.0.1:6379> hget hash field #获取一个值
"cccc"
127.0.0.1:6379> hmset hash field hello field2 world #设置多个值
OK
127.0.0.1:6379> hmget hash field field2 #获取多个值
1) "hello"
2) "world"
127.0.0.1:6379> hgetall hash #获取全部的值
1) "field"
2) "hello"
3) "field2"
4) "world"
删除
127.0.0.1:6379> hdel hash field #删除hash指定的值
(integer) 1
127.0.0.1:6379> hgetall hash #对应的值也没有了
1) "field2"
2) "world"
获取
127.0.0.1:6379> HGETALL hash
1) "field2"
2) "world"
3) "field"
4) "hello"
127.0.0.1:6379> hlen hash #获取hash里的字符数量
(integer) 2
127.0.0.1:6379> hkeys hash #只获取field这个字段的值
1) "field2"
2) "field"
127.0.0.1:6379> hvals hash #只获取hash里的值
1) "world"
2) "hello"
判断
127.0.0.1:6379> hexists hash field1
(integer) 0
127.0.0.1:6379> HEXISTS hash field #判断指定的字段是否存在
(integer) 1
127.0.0.1:6379> hset hash field3 555
(integer) 1
127.0.0.1:6379> hincrby hash field3 1 #增量
(integer) 556
127.0.0.1:6379> hincrby hash field3 -1 #减量
(integer) 555
127.0.0.1:6379> hsetnx hash field4 hello #如果不存在就设置
(integer) 1
127.0.0.1:6379> hsetnx hash field4 world #如果存在就不设置
(integer) 0
hash可以做用户信息之类的保存,或者经常变动的信息就用hash做存储,hash更适合对象存储,string适合字符串的存储。