redis面试题:redis存在线程安全问题吗?

redis面试题:redis存在线程安全问题吗?
这个问题可以从两个方面来回答:
从redis服务端层面,redis server本身是线程安全的key-value数据库,在redis server端执行指令的时候不需要任何的同步机制,它不会存在任何的线程安全的问题。

虽然redis6.0里面增加了多线程模型。但是增加的多线程模型只是用来处理网络的IO事件。对于指令的执行过程仍然是采用主线程来处理,所以说它不存在多个线程同时去执行操作指令的情况。为什么redis里面没有采用多线程来执行指令,有几方面的原因。

1.redis本身可能出现的瓶颈点无非就是网络IO,CPU,内存。但是CPU不是Redis的瓶颈点,所以没有必要使用多线程来执行指令。如果采用多线程,意味着对于redis的所有指令操作,都必须要考虑线程安全问题,也就是说需要加锁来解决,这种方式带来的性能影响反而更大。
2.从redis的客户端的层面来说。redis server中的指令操作是原子的,但是有多个 Redis客户端同时执行多个指令的情况下就无法保证原子性。假设两个redis client同时去获取redis server上的key值,同时去进行修改和写入,因为多线程环境下的原子性无法被保障,以及多进程的情况下,共享资源访问的一个竞争问题,使得数据的安全性无法得到保障。当然对于客户端层面,线程安全性问题解决的方案有很多。比如,尽可能的使用redis里面的原子指令或者对于多个客户端的资源访问去加锁,也可以通过Lua脚本实现多个指令的操作,从而去满足它的原子性。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、什么是 Redis? 2、Redis 相比 memcached 有哪些优势? 3、Redis 支持哪几种数据类型? 4、Redis 主要消耗什么物理资源? 5、Redis 的全称是什么? 6、Redis 有哪几种数据淘汰策略? 7、Redis 官方为什么不提供 Windows 版本? 8、一个字符串类型的值能存储最大容量是多少? 9、为什么 Redis 需要把所有数据放到内存中? 10、Redis 集群方案应该怎么做?都有哪些方案? 11、Redis 集群方案什么情况下会导致整个集群不可用? 12、MySQL 里有 2000w 数据,Redis 中只存 20w 的数据, 如何保证 Redis 中的数据都是热点数据? 13、Redis 有哪些适合的场景? 14、Redis 支持的 Java 客户端都有哪些?官方推荐用哪个? 15、RedisRedisson 有什么关系? 16、Jedis 与 Redisson 对比有什么优缺点? 17、Redis 如何设置密码及验证密码? 18、说说 Redis 哈希槽的概念? 19、Redis 集群的主从复制模型是怎样的? 20、Redis 集群会有写操作丢失吗?为什么? 21、Redis 集群之间是如何复制的? 22、Redis 集群最大节点个数是多少? 23、Redis 集群如何选择数据库? 24、怎么测试 Redis 的连通性? 25、Redis 中的管道有什么用? 26、怎么理解 Redis 事务? 27、Redis 事务相关的命令有哪几个? 28、Redis key 的过期时间和永久有效分别怎么设置? 29、Redis 如何做内存优化? 30、Redis 回收进程如何工作的? 31、Redis 回收使用的是什么算法? 32、Redis 如何做大量数据插入? 33、为什么要做 Redis 分区? 34、你知道有哪些 Redis 分区实现方案? 35、Redis 分区有什么缺点? 36、Redis 持久化数据和缓存怎么做扩容? 37、分布式 Redis 是前期做还是后期规模上来了再做好?为 什么? 38、Twemproxy 是什么? 39、支持一致性哈希的客户端有哪些? 40、Redis 与其他 key-value 存储有什么不同? 41、Redis 的内存占用情况怎么样? 42、都有哪些办法可以降低 Redis 的内存使用情况呢? 43、查看 Redis 使用情况及状态信息用什么命令? 44、Redis 的内存用完了会发生什么? 45、Redis 是单线程的,如何提高多核 CPU 的利用率? 46、一个 Redis 实例最多能存放多少的 keys?List、Set、 Sorted Set 他们最多能存放多少元素? 47、Redis 常见性能问题和解决方案? 48、Redis 提供了哪几种持久化方式? 49、如何选择合适的持久化方式? 50、修改配置不重启 Redis 会实时生效吗?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值