什么是Redis?
Redis
是一个高性能的key-value
数据库,它支持数据的持久化,可以将内存中的数据持久化到磁盘中,重启的时候可以再次加载进行使用。Redis
除了支持简单的key-value
类型的数据,同时还提供list、set、zset、hash
等数据结构的存储。此外还支持msater-slave
模式的数据备份、发布/订阅、通知、key过期能等特性。
Redis与其它的key-value
存储有什么不同?
- Redis有着更为复杂的数据结构并提供原子操作,这是一个不同于其它数据库的特性并且Redis的数据类型都是基于基本数据结构同时对开发者透明无需进行额外的抽象。
- Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,应用数据量不能大于硬件内存。
Redis的优点?
- 速度快,因为数据是在内存中的,并且底层是C语言实现,离操作系统更近,还是用了单线程模型,不会出现多线程竞争、锁等问题
- 支持丰富的数据类型,
string list set sorted zset hash
- 丰富的特性:除了丰富的数据结构之外,还支持一些高级功能:如键过期(定时缓存)、发布/订阅(消息队列)、事物、管道、Lua脚本、集群分配和数据复制、内存持久化等。
Redis的安装及配置说明
Redis可以被用来做什么?
基于上面介绍的redis的优点,在生产环境中我们常用redis做下面的一些事情:
缓存
频繁的读取DB会给DB带来非常大的压力,所以有些更新频率非常低的数据可以考虑基于Redis实现分布式缓存,可以提高访问速度。
分布式锁
利用Redis的键过期策略以及Redis单进程的,可以良好的实现分布式锁,乐观锁、悲观锁等。
会话缓存
比如用户授权完成之后,将用户的信息存储到缓存中(代替session),后面如果需要用户id直接从缓存中取出即可。
热门分类和排行榜功能
可以按照某个条件进行排序,必须用户访问量排行榜等,使用hash类型的数据结构
消息队列
Redis
能作为一个消息队列来使用,利用List
类型的数据结构,LPUSH
命令可以把数据添加到链表头部,通过BRPOP
从链表尾部取
出。
交、并、差集
可以实现共同好友、共同关注等场景的业务
计数
redis
的操作是原子的,可以利用这个特性实现一个简单的计数功能
小结
本文主要介绍了
Redis
的一些特性以及在生产环境中Redis
的部分使用场景。仅仅作为简单了解Redis
做了一个简单介绍。
网友评论