目录
1、概念
Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key-value 数据库。C语言编写。Redis 是单进程单线程的,Redis 利用队列技术将并发访问变为串行访问,消除了传统数据库串行控制的开销。
2、数据结构
Redis 支持五种数据类型:string(字符串),hash(哈希),list(列表), set(集合)及 zsetsorted set:有序集合)。
我们实际项目中比较常用的是 string,hash。 如果你是 Redis 中高级用户,还需要加上下面几种数据结构 HyperLogLog、Geo、Pub/Sub。
如果你说还玩过 Redis Module,像 BloomFilter,RedisSearch,Redis-ML。
3、特点优势
1.可持久化
Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
2. 支持数据类型多
Redis不仅仅支持简单的 key-value 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储
3. 性能极高
Redis 能读的速度是 110000 次/s,写的速度是 81000 次/s
4.原子性
Redis 的所有操作都是原子性的,意思就是要么都成功执行,要么都失败不执行。 单个操作是原子性的,多个操作也支持事 务, 即原子性, 通过 MULTI 和 EXEC指令包起来
5.数据备份
Redis支持数据的备份,即 master-slave 模式的数据备份
6.特性丰富
Redis 还支持 publish/subscribe,通知,key 过期等等特性
4、使用场景
1.分布式锁
可以结合Redisson来使用分布式锁,实现并发控制。参考这篇文章:Redis分布式锁(Redisson)实现原理分析
2.会话缓存
比较常用的一种使用 Redis 的情景是会话缓存(session cache)。用 Redis 缓存会话比其他存储(如 Memcached)的优势在于:Redis 提供持久化。当维护一个不是严格要求一致性的缓存时,比如购物车。当然,可以缓存会话,也可以缓存其它类型数据了,缓存一些查询频繁且变动不频繁的数据也很合适了,也是很常用的业务场景
3.排行榜/计数器
Redis 在内存中对数字进行递增或递减的操作实现的非常好。集合(Set)和有序集合(Sorted Set)也使得我们在执行这些操作的时候变的非常简单,Redis 只是正好提供了这两种数据结构
4.发布/订阅
发布/订阅的使用场景比较多,Redis也支持发布/订阅功能,但是相比RabbitMQ这些专业的MQ,Redis的发布/订阅可能会丢失消息,一般不推荐使用