0 什么是Redis
redis的结构是key-value
key是字符串,value有5种类型
字符串类型,hash类型(map),set类型(不允许重复),list(linkedlist),有序集合类型(sortedset)
1 字符串类型
命令 | 代码 |
---|---|
存储 | set username siyu |
获取 | get username |
删除 | del username |
字符串的使用场景:
1-缓存
2-计数器,通过incr key
2 hash类型(map)
命令 | 代码 |
---|---|
存储key | hset stu username siyu |
存储value | hset stu pwd 123 |
获取 | hget stu username |
获取所有 | hgetall stu |
删除 | hdel stu username |
hash 特别适合用于存储对象,后续操作的时候,
你可以直接仅仅修改 这个对象中的某个字段的值
3 list
命令 | 代码 |
---|---|
左边存储 | lpush list 1 |
右边存储 | rpush list 1 |
获取 | range list 0 -1 |
删除左边 | lpop list |
删除右边 | rpop list |
list 就是链表,Redis list 的应用场景非常多,也是Redis最重要的数据结构之一,比如微博的关注列表,粉丝列表,消息列表等功能都可以用Redis的 list 结构来实现。
使用lpush
+rpop
或者rpush
+lpop
实现消息队列。
Redis list 的实现为一个双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销。
另外可以通过 lrange 命令,就是从某个元素开始读取多少个元素,可以基于 list 实现分页查询,这个很棒的一个功能,基 于 redis 实现简单的高性能分页,可以做类似微博那种下拉不断分页的东西(一页一页的往下走),性能高。
4 set
命令 | 代码 |
---|---|
存储 | sadd myset 5 |
获取 | smembers myset |
删除 | srem myset 5 |
set 对外提供的功能与list类似是一个列表的功能,特殊之处在于 set 是可以自动排重的。 当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在一个
set集合内的重要接口,这个也是list所不能提供的。可以基于 set 轻易实现交集、并集、差集的操作。
5有序集合类型(不允许重复,且有序)
每一个元素都会关联一个double类型分数,redis正是通过分数来为集合成员排序
命令 | 代码 |
---|---|
存储 | zadd my 78 nezha |
取 | zrange my 0 -1 |
删除 | zrem my nezha |
直播系统中,实时排行信息包含直播间在线用户列表,各种礼物排行榜,弹幕消息(可以理解为按消息维度的消 息排行榜)等信息,适合使用 Redis 中的 Sorted Set 结构进行存储。
6 通用命令
命令 | 代码 |
---|---|
查询所有key | keys * |
key对应类型 | type key |
删除符合key前缀 | del key* |
删除指定key | del key |
清当前库缓存 | flushdb |
清整个redis缓存 | flushall |