PHP试题之---Redis和Memcached

Redis和Memcached的一个区别:

1、Redis和Memcache都是将数据存放在内存中,都是内存数据库,不过memcache还可用于缓存其他东西,例如图片、视频等

2、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储

3、memcache挂掉后,数据没了,redis可以定期保存到磁盘(持久化)

4、redis数据丢失后可以通过快照或aof恢复,还支持master-slave模式的数据备份

5、memcached是多线程,非阻塞IO复用的网络模型,分为监听主线程和worker子线程,监听线程监听网络连接,接受请求后,将连接描述字pipe传递给worker线程,进行读写IO,网络层使用libevent封装的事件库,多线程模型可以发挥多核作用

6、redis使用单线程的IO复用模型,自己封装了一个简单的AeEvent事件处理框架,主要实现了epoll, kqueue和select,对于单存只有IO操作来说,单线程可以将速度优势发挥到最大,但是redis也提供了一些简单的计算功能,比如排序、聚合等,对于这些操作,单线程模型施加会严重影响整体吞吐量,CPU计算过程中,整个IO调度都是被阻塞的

7、memcached使用key-value形式存储和访问数据,在内存中维护一张巨大的HashTable,使得对数据查询的时间复杂度降低到O(1),保证了对数据的高性能访问

8、仅对于KV格式的数据的读取速度来说,memcached的速度比Redis是要快一些的

Redis数据类型及相对应的使用场景:

1、k-v格式的数据,主要应用于字符串和数字直接存取

2、hash格式的数据,可应用于存储和修改用户信息比如用户的昵称、年龄、性别、积分等

3、list,它是一种双向链表的结构,支持双向的pop和push,主要应用于消息队列

4、set,是一种无序的集合,集合中的元素没有先后顺序,不重复,将重复的元素放入Set会自动去重,可应用于某些需要去重的列表,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的,还可以存储一些集合性的数据,比如在微博应用中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合

5、sorted set,有序集合,相比set,元素放入集合时还要提供该元素的分数,可根据分数自动排序,它可以做带权重的队列,比如普通消息的score为1,重要消息的score为2,然后工作线程可以选择按score的倒序来获取工作任务,让重要的任务优先执行

memcached缓存服务器一致性哈希分布部署:

https://blog.csdn.net/luyaran/article/details/84939951

等等吧,还有很多,咱这里就简单记录到这里了。

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luyaran

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值