Redis(2)Redis数据类型,难点是set
Redis中存储数据是通过key-value存储的,对于value的类型有以下几种(key都是string):
字符串 Map<String, String>
Hash类型 Map<String, Map<String, String>>
List Map<String, List>
Set Map<String, HasSet>
SortedSet(zset) Map<String, TreeSet>
在redis中的命令语句中,命令是忽略大小写的,而key是不忽略大小写的。
value为String数据类型操作:Map<String, String>
set name zhangsan
set age 18
get name
get age
incr age
incrby age 2
del age
获取多个键值
mset k1 v1 k2 v2 k3 v3
mset k1 10 k2 20 k3 30
设置数据存在的时间
set key value [expiration EX seconds|PX milliseconds] [NX|XX]
set aaa 10 EX 10
value为Hash数据类型操作:Map<String, Map<String, String>>
hash叫散列类型,它提供了字段和字段值的映射。字段值只能是字符串类型,不支持散列类型、集合类型等其它类型。如下:
hset hubei wuhan 20
hget hubei wuhan
hget hubei
del hubei
hincrby hubei wuhan 2
同时赋予多值,取多值
hmset hash1 name zhangsan sex 1
hmget hash1 name sex age
获取所有键值
hgetall hash1
等
value为List数据类型操作:Map<String, List>
lpush : 插入到队首
rpush: 插入到队尾
lpush list1 123 Map<list1,List(123)>
lpush list1 456 Map<list1,List(456,123)>
rpush list1 789 Map<list1,List(456,123,789)>
lrange list1 0 -1 -1表示获取最后一个,这个命令的意思是获取所有值
lrange list1 0 2 List脚标从0开始
弹出列表,则表示从列表中删除
lpop list1
获取列表长度
llen list1
value为Set数据类型操作:Map<String, List>
List和set的区别:
List是有序且可重复
Set是无序唯一。
sadd set1 1 2 2 3 3 4 5
smembers set1
- “1”
- “2”
- “3”
- “4”
- “5”
srem set1 3 删除value为3的元素
sismember set1 3 判断元素3是否存在
运算命令
差集:sdiff set1 set2 属于set1并且不属于set2的元素构成的集合。
交集:sinter set1 set2 属于set1且属于set2的元素构成的集合。
并集:属于set1 或者属于set2的元素构成的集合 sunion set1 set2
sortedset(zset)
Zset是唯一且有序的。
Zset是通过score 来进行排序的。
zadd zset1 1 haha 3 hehe 2 heihei
- “haha”
- “heihei”
- “hehe”
zrange zset1 0 1
- “haha”
- “heihei”
降序排序
zrevrange zset1 0 1
- “hehe”
- “heihei”
zrem zset1 haha:删掉haha
zscore zset1 hehe:显示hehe的score
升序,查看 元素及值
zrange zset1 0 1 withscores
- “haha”
- “1”
- “heihei”
- “2”
增加某元素的分数,返回值是更改后的分数
ZINCRBY scoreboard 4 lisi
"4“ ,每次执行一次+4
获取元素的排名
升序,从小到大
语法:ZRANK key member
ZRANK scoreboard lisi
降序,从大到小
语法:ZREVRANK key member
ZREVRANK scoreboard zhangsan
zset的其他命令当用的zset时可以自行补充