Redis 相比 Memcached 有哪些优势?
1、Redis 相比 memecache,拥有更多的数据结构和支持更丰富的数据操作。
Redis 支持 key-value,常用的数据类型主要有 String、Hash、List、Set、Sorted Set。
memecache 只支持 key-value。
2、内存使用率对比,Redis 采用 hash 结构来做 key-value 存储,由于其组合式的压缩,其内
存利用率会高于 memecache。
3、性能对比:Redis 只使用单核,memecache 使用多核。
4、Redis 支持磁盘持久化,memecache 不支持。
Redis 可以将一些很久没用到的 value 通过 swap 方法交换到磁盘。
5、Redis 支持分布式集群,memecache 不支持。
Redis 常见性能问题和解决方案?
(1) Master 最好不要做任何持久化工作,如 RDB 内存快照和 AOF 日志文件
(2) 如果数据比较重要,某个 Slave 开启 AOF 备份数据,策略设置为每秒同步一次
(3) 为了主从复制的速度和连接的稳定性, Master 和 Slave 最好在同一个局域网内
(4) 尽量避免在压力很大的主库上增加从库
(5) 主从复制不要用图状结构,用单向链表结构更为稳定,即: Master <- Slave1 <- Slave2
<-Slave3...
redis 的过期策略是什么?内存淘汰机制有哪些
redis 采用的是定期删除+惰性删除策略。
在 redis.conf 中有一行配置(maxmemory-policy volatile-lru)内存淘汰策略
volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据
淘汰
volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰
volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰
allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰
allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰
no-enviction(驱逐):禁止驱逐数据,新写入操作会报错
Redis 支持的 Java 客户端都有哪些?官方推荐用哪个?
Redisson、Jedis、lettuce 等等,官方推荐使用 Redisson。
Jedis 与 Redisson 对比有什么优缺点?
Jedis 是 Redis 的 Java 实现的客户端,其 API 提供了比较全面的 Redis 命令的支持;
Redisson 实现了分布式和可扩展的 Java 数据结构,和 Jedis 相比,功能较为简单,不支持
字符串操作,不支持排序、事务、管道、分区等 Redis 特性。Redisson 的宗旨是促进使用
者对 Redis 的关注分离,从而让使用者能够将精力更集中地放在处理业务逻辑上。
缓存雪崩、缓存穿透、缓存预热、缓存更 新、缓存降级等问题?
缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 ?
缓存雪崩:指缓存中的大量数据同时失效或缓存系统发生故障,导致大量请求直接访问后端存储系统,给后端系统带来巨大压力。
缓存穿透:指查询一个不存在的数据,由于缓存不命中时需要从数据库查询,若查不到数据则不写入缓存,导致每次请求都要查询数据库。
缓存预热:指系统上线后,提前将相关缓存数据加载到缓存系统,避免用户请求时先查询数据库
缓存更新:指为节约内存而对部分数据进行淘汰或更新。
缓存降级:指缓存失效或缓存服务器故障时,不访问数据库,直接返回默认数据或访问服务内存数据
怎么理解 Redis 事务?
1.事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执
行的过程中,不会被其他客户端发送来的命令请求所打断。
2.事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行
事务相关的命令有哪几个?
MULTI、EXEC、DISCARD和WATCH
multl :开启事务,redis会将后续的命令逐个放入队列中。
exec :提交事务,原子化执行事务块内的所有命令。
discard:取消事务,放弃执行事务块内的所有命令。
watch:监听事务,监视一个或多个key,如果在事务执行前这个key的值发生改变,事务将被打断。
Redis 如何做内存优化?
合理设置过期时间:在使用Redis时,可以设置键值对的过期时间,当过期时间到达后,Redis会自动删除对应的键值对,释放内存空间。
开启内存压缩功能:通过Redis提供的Ziplist和Intset等编码来压缩字符串和整数类型的数据,减少Redis服务器上的内存使用。
Redis 的同步机制了解么?
Redis 可以使用主从同步,从从同步。第一次同步时,主节点做一次 bgsave,并同时将后续
修改操作记录到内存 buffer,待完成后将 rdb 文件全量同步到复制节点,复制节点接受完
成后将 rdb 镜像加载到内存。加载完成后,再通知主节点将期间修改的操作记录同步到复
制节点进行重放就完成了同步过程。