1. Redis 介绍
- Redis 是一个开源的使用 C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。
- 本质是客户端-服务端应用软件程序。
- 特点是使用简单、性能强悍、功能应用场景丰富。
2. 通用命令
命令
描述
DEL key
该命令用于在 key 存在时删除 key。
DUMP key
序列化给定 key,并返回被序列化的值。
EXISTS key
检查给定 key 是否存在。
EXPIRE key seconds
为给定 key 设置过期时间,以秒记。
TTL key
以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。
TYPE key
返回 key 所存储的值得类型。
3. 数据结构
1. String
String 数据结构是简单的 key-value 类型,value 其实不仅是 String,也可以是数字。
使用场景:微博数,粉丝数(常规计算)
常用命令
命令
描述
Get
获取指定 key 的值
Set
设置指定 key 的值
Incr
将 key 中存储的数字值增一
Decr
将 key 中存储的数字值减一
Mget
获取所有(一个或多个)给定 key 的值
2. List
List 就是链表。
使用场景:微博的关注列表,粉丝列表
常用命令
命令
描述
Lpush
将一个或多个值插入到列表头部
Rpush
在列表中添加一个或多个值
Lpop
移除并获取列表的第一个元素,返回值为移除的元素
Rpop
移除列表的最后一个元素,返回值为移除的元素
Lrange
获取所有(一个或多个)给定 key 的值
3. Set
Set 就是一个集合,集合的概念就是一堆不重复值的组合。利用 Redis 提供的 Set 数据结构,可以存储一些集合性的数据。
使用场景:实现如共同关注、共同喜好、二度好友。
常用命令
命令
描述
Sadd
向集合中添加一个或多个成员
Spop
移除并返回集合中的一个随机元素
Smembers
返回集合中的所有成员
Sunion
返回所有给定集合的并集
4. Sorted set
Sorted set 的使用场景与 set 类似,区别是 set 不是自动有序的,而 sorted set 可以通过用户额外提供一个优先级(score)的参数来为成员排序,并且是插入有序的,即自动排序。
使用场景:排行榜、按照用户投票和时间排序
常用命令
命令
描述
Zadd
向有序集合添加一个或多个成员,或者更新已存在成员的分数
Zrange
通过索引区间返回有序集合中指定区间内的成员
Zrem
移除有序集合中的一个或多个成员
Zcard
获取有序集合的成员数
5. Hash
Hash 是一个 String 类型的 field 和 value 的映射表。
使用场景:存储部分变更数据,如用户信息。
常用命令
命令
描述
Hget
获取存储在哈希表中指定字段的值
Hset
将哈希表 key 中的字段 field 的值设为 value
Hgetall
获取在哈希表中指定 key 的所有字段和值
6. GEO
3.2 版本开始对 GEO(地理位置)的支持。
使用场景:LBS 应用开发。
常用命令
命令
描述
GEOADD
增加地理位置的坐标,可以批量添加地理位置
GEODIST
获取两个地理位置的距离
GEOHASH
获取某个地理位置的 geohash 值
GEOPOS
获取指定位置的坐标,可以批量获取多个地理位置的坐标
GEORADIUS
根据给定地理位置坐标获取指定范围内的地理位置集合(注意:该命令的中心点由输入的经度和纬度决定)
GEORADIUSBYMEMBER
根据给定成员的位置获取指定范围内的位置信息集合(注意:该命令的中心点是由给定的位置元素决定)
7. Stream
5.0 版本开始的新结构 “流”
使用场景:消费者生产者场景(类似 MQ)
常用命令
命令
描述
XADD
往指定的流中添加消息
XLEN
stream 流中的消息数量
XDEL
删除流中的消息
XRANGE
返回流中满足给定 ID 范围的消息
XREAD
从一个或者多个流中读取消息
XINFO
检索关于流和关联的消费者组的不同的信息
4. Spring 文档
- 地址:https://docs.spring.io/spring-data/redis/docs/2.2.7.RELEASE/reference/html
- jedis 对 redis5 新特性支持有限。