一、Redis是什么?
Redis是一个key-value存储系统,它支持存储的value类型相对更多,包括string、list、set、zset(sorted set --有序集合)和hash。
二、Redis都有哪些使用场景?
- Redis是基于内存的nosql数据库,可以通过新建线程的形式进行持久化,不影响Redis单线程的读写操作
- 通过list取最新的N条数据
- 模拟类似于token这种需要设置过期时间的场景
- 发布订阅消息系统
- 定时器、计数器
三、Redis有哪些功能?
基于内存缓存数据
四、Redis支持的数据类型有哪些?
- 字符串
- hash
- list
- set
- zset
五、Redis取值存值问题
六、Redis为什么是单线程的?
七、Redis真的是单线程的吗?
八、Redis持久化有几种方式?
九、Redis和 memecache 有什么区别?
十、Redis支持的 java 客户端都有哪些?或者说使用redis的框架有哪些?
概念:
Jedis:是Redis的Java实现客户端,提供了比较全面的Redis命令的支持,
Redisson:实现了分布式和可扩展的Java数据结构。
Lettuce:高级Redis客户端,用于线程安全同步,异步和响应使用,支持集群,Sentinel,管道和编码器。
优点:
Jedis:比较全面的提供了Redis的操作特性
Redisson:促使使用者对Redis的关注分离,提供很多分布式相关操作服务,例如,分布式锁,分布式集合,可通过Redis支持延迟队列
Lettuce:主要在一些分布式缓存框架上使用比较多
可伸缩:
Jedis:使用阻塞的I/O,且其方法调用都是同步的,程序流需要等到sockets处理完I/O才能执行,不支持异步。Jedis客户端实例不是线程安全的,所以需要通过连接池来使用Jedis。
Redisson:基于Netty框架的事件驱动的通信层,其方法调用是异步的。Redisson的API是线程安全的,所以可以操作单个Redisson连接来完成各种操作
Lettuce:基于Netty框架的事件驱动的通信层,其方法调用是异步的。Lettuce的API是线程安全的,所以可以操作单个Lettuce连接来完成各种操作
十一、jedis 和 redisson 有哪些区别?
十二、什么是缓存穿透?怎么解决?
十三、怎么保证缓存和数据库数据的一致性?
十四、Redis,什么是缓存穿透?怎么解决?
十五、Redis怎么实现分布式锁?
十六、Redis分布式锁有什么缺陷?
十七、Redis如何做内存优化?
————————————————
版权声明:本文为CSDN博主「哪 吒」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/guorui_java/article/details/117194603