概念
什么是Redis?
Redis 是完全开源免费的,遵守BSD协议,是一个高性能(NOSQL)的key-value数据库,Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存且可持久化的日志型、key-Value数据库,并提供多种语言的API
Redis 与其他 key - value 缓存产品有以下三个特点:
Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
Redis支持数据的备份,即master-slave模式的数据备份。
Redis 优势
性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
原子性 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
高速读写,redis使用自己实现的分离器,代码量很短,没有使用lock(mysql),因此效率非常高
Redis 缺点
持久化,Redis直接将 数据存储到内存中,要将数据保存到磁盘上,Redis可以使用两种方式实现持久化过程。
定时快照(snapshot):每隔一段时间将整个数据库写到磁盘上,每次均是写全部数据,代价非常高
基于语句追加(aof):只追踪变化的数据,但是追加的log可能过大,同时所有的操作均重新执行一遍,回复速度慢
耗内存,占用内存过高
Redis 特点
支持数据持久化,可将内存中的数据保存在磁盘,重启时再次加载
支持 KV 类型数据,也支持其他丰富的数据结构存储
支持数据备份,即 master-slave 模式的数据备份
Redis 支持的数据结构
STRING:字符串、整数或浮点数
LIST:列表,可存储多个相同的字符串
SET:集合,存储不同元素,无序排列
HASH:散列表,存储键值对之间的映射,无序排列
ZSET:有序集合,存储键值对,有序排列
Redis的Key的命名建议
1、redis单个key 存入512M大小, key不要太长,尽量不要超过1024字节,这不仅消耗内存,而且会降低查找的效率;
2、key也不要太短,太短的话,key的可读性会降低;
在一个项目中,key最好使用统一的命名模式,例如user:123:password;
3、key名称区分大小写
Redis的应用场景
企业级开发中可用作数据库、缓存、热点数据和消息中间件等功能
常用场景示例如下:
1、缓存 键过期、键淘汰策略
2、排行榜 有序集合
3、计数器 incr
4、分布式会话 session
5、分布式锁 setnx
6、社交网络 哈希、集合
7、最新列表 列表
8、消息系统 发布/订阅、阻塞队列