Redis

Redis与Memcached的区别与比较

  1. Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。memcache支持简单的数据类型,String。
  2. Redis支持数据的备份,即master-slave模式的数据备份。
  3. Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用,而Memecache把数据全部存在内存之中。
  4. redis的速度比memcached快很多。
  5. Memcached是多线程,非阻塞IO复用的网络模型;Redis使用单线程的IO复用模型。

Redis与Memcached的选择

  • 使用Redis的String类型做的事,都可以用Memcached替换,以此换取更好的性能提升; 除此以外,优先考虑Redis。

使用Redis有哪些好处?

  1. 速度快:因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1) 。
  2. 支持丰富数据类型:支持string,list,set,sorted set,hash 。
  3. 支持事务:操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行 。
  4. 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除。

Redis 常见的性能问题及解决方法?

  1. Master最好不要做任何持久化工作,如RDB内存快照和AOF日志文件。

  2. 如果数据比较重要,某个Slave开启AOF备份数据,策略设置为每秒同步一次。

  3. 为了主从复制的速度和连接的稳定性,Master和Slave最好在同一个局域网内。

  4. 尽量避免在压力很大的主库上增加从库。

Redis 最适合的场景

  1. 会话缓存(Session Cache)
    最常用的一种使用Redis的情景是会话缓存(session cache)。用Redis缓存会话比其他存储(如Memcached)的优势在于:Redis提供持久化。
  2. 全页缓存(FPC)
  3. 队列
  4. 排行榜/计数器
  5. 发布/订阅

Redis的并发竞争问题如何解决?

Redis为单进程单线程模式,采用队列模式将并发访问变为串行访问。Redis本身没有锁的概念,Redis对于多个客户端连接并不存在竞争,但是在Jedis客户端对Redis进行并发访问时会发生连接超时、数据转换错误、阻塞、客户端关闭连接等问题,这些问题均是由于客户端连接混乱造成。对此有2种解决方法:

  1. 客户端角度,为保证每个客户端间正常有序与Redis进行通信,对连接进行池化,同时对客户端读写Redis操作采用内部锁synchronized。
  2. 服务器角度,利用setnx实现锁。

对于第一种,需要应用程序自己处理资源的同步,可以使用的方法比较通俗,可以使用synchronized也可以使用lock;第二种需要用到Redis的setnx命令,但是需要注意一些问题。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值