简介
Redis是一个开源的使用C语言编写、支持网络、可基于内存也可持久化的日志类型、Key-Value数据库,
并 提供多种语言的API。
本质是客户端-服务端应用软件程序。存储在内存中,因此操作速度比数据库更快。
特点:使用简单、性能强悍、功能应用场景丰富。
1. 常用命令
命令 | 含义 |
---|---|
DEL Key | 在key存在时候删除key |
DUMP Key | 序列化给定key,并返回被序列化的值 |
EXISTS Key | 检查给定key是否存在 |
EXPIRE Key seconds | 为给定key设置过期时间,以秒计 |
TTL Key | 以秒为单位,返回给定key的剩余生存时间(TTL,time to live) |
TYPE Key | 返回key所存储的值的类型 |
2. 数据结构
(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
GEO 3.2版本开始对GEO(地理位置)的支持
使用场景:LBS应用开发
命令 | 含义 |
---|---|
GEOADD | 增加地理位置的坐标,可以批量添加地理位置。 |
GEODIST | 获取两个地理位置的距离 |
GEOHASH | 获取某个地理位置的geohash值 |
GEOPOS | 获取指定位置的坐标,可以批量获取多个地理位置的坐标 |
GEOPADIUS | 根据给定地理位置坐标获取指定范围内的地理位置集合(注意:该命令的中心点由输入的经纬度决定) |
GEORADIUSBYMEMBER | 根据给定地理位置获取指定范围内的位置信息集合(注意:该命令的中心点由给定的位置元素决定) |
(7)Stream
Stream 5.0版开始的新结构“流”
使用场景:消费者生产者场景(类似MQ)
命令 | 含义 |
---|---|
XADD | 往指定的流中添加消息 |
XLEN | stream流中的消息数量 |
XDEL | 删除流中的消息 |
XRANGE | 返回流中满足给定ID范围的消息 |
XREAD | 从一个或者多个流中读取信息 |
XINFO | 检索关于流和关联的消费者组的不同的信息 |
3.新特性
【pipeline】
应用场景:
大量数据加载:数据库启动时,把数据库数据提前加载到redis,而数据库内容大;
异步处理:redis内容情况、redis重装。
单命令模式/pipeline模式1s内传输数据量对比:6-7倍 70万:12万
【发布-订阅】(没有持久化)
应用场景:删除超时订单
来源:oschina
链接:https://my.oschina.net/u/4385595/blog/4358845