1、概览
Redis(Remote Dictionary Server)是一个高性能的key-value内存存储系统,是近几年十分火热的NoSQL数据库的典型代表。她提供了丰富的数据类型,基于内存的设计使其具有高性能的读写能力,在数据库、缓存和消息领域都有什么出色的表现。
2、数据类型
Redis支持丰富的数据类型,如字符串(String),哈希(Hash),列表(List),集合(Set),有序集合(ZSet)与范围查询,Bitmaps,Hyperloglogs 和地理空间(Geospatial)索引半径查询。
其中常见的数据结构类型有5种:String、List、Set、Hash、ZSet。
3、持久机制
Redis常见的持久化机制主要有两种RDB和AOF。
RDB是快照的方式,也是默认的持久化机制,就是每隔一段时间将数据集以快照的方式写入到二进制文件dump.rdb中。
AOF(Append-only file)是会记录每一步写操作,最大限度的保证了数据的安全性。文件往往比RDB的大,运行效率也偏低,但是数据一致性更好。
4、淘汰策略
Redis主要有六种淘汰策略,分两大类:设置过期时间的数据和没有设置的。
volatile-lru:从已设置过期时间的数据集中挑选最近最少使用的数据淘汰;
volatile-ttl:从已设置过期时间的数据集中挑选将要过期的数据淘汰;
volatile-random:从已设置过期时间的数据集中任意选择数据淘汰;
allkeys-lru:从数据集中挑选最近最少使用的数据淘汰;
allkeys-random:从数据集中任意选择数据淘汰;
no-enviction(驱逐):禁止驱逐数据;
5、线程模型
Redis的线程IO模型是单线程的,使用多路线程I/O复用模型来提升处理效率。
单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU的情况。I/O多路复用,非阻塞IO,采用轮询机制依次处理就绪的流,避免了大量的无用操作。
6、常用工具类
Jedis:提供了较全面的Redis命令的支持,是Redis的Java实现客户端。
Redisson:实现了分布式和可扩展的Java数据结构,如分布式锁。
Lettuce:主要用于分布式缓存框架,线程安全同步,异步和响应,支持集群。
7、事务
Redis支持事务操作,常用的命令有:MULTI、EXEC、DISCARD和WATCH。
8、Redis发布订阅
Redis 发布订阅(pub/sub)是一种消息通信模式,类似于消息队列。订阅者通过SUBSCRIBE命令订阅消息,发布者通过PUBLISH发布消息。
以上都是Redis常见的问题,大家可以参考下。