什么是Redis

  • Redis是一个用C语言写的,开源、支持网络、基于内存、可选持久性的、非关系型、Key-Value数据库。它是一个内存中的数据结构存储系统,可以用作数据库,缓存和消息中间件。

使用Redis有哪些好处

  1. 速度快:因为数据结构在内存中类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)

  2. 支持丰富的数据类型:String,list,set,sorted set,hash

  3. 支持事务:操作都是原子性,所谓原子性就是对数据的更改,要么全部执行,要么全部不执行。

  4. 丰富的特性:可用于缓存,按Key设置过期时间,过期后将会自动删除。


Redis和Memcached区别和比较

  • Redis不仅仅支持简单的k/v类型的数据,同时还提供string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)等数据结构的存储。
  • memcache支持简单的数据类型,String。

  • Redis支持数据的备份,即master-slave模式的数据备份。

  • Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用,而Memecache把数据全部存在内存之中

  • redis的速度比memcached快很多

  • Memcached是多线程,非阻塞IO复用的网络模型;Redis使用单线程的IO复用模型。

有持久化需求或者对数据结构和处理有高级要求的应用,选择redis,其他简单的key/value存储,选择memcached。 对于两者的选择需要要看具体的应用场景,如果需要缓存的数据只是key-value这样简单的结构时,则还是采用memcache,它也足够的稳定可靠。 如果涉及到存储,排序等一系列复杂的操作时,毫无疑问选择redis。


Redis有哪几种数据淘汰策略

  1. volatile-lru:从已设置过期时间的数据集中挑选最近最少使用的数据进行淘汰。

  2. volatile-ttl:从已设置过期时间的数据集中挑选将要过期的数据进行淘汰。

  3. volatile-random:从已设置过期时间的数据集中随机选择数据进行淘汰。

  4. allkeys-lru:从数据集中挑选最近最少使用的数据进行淘汰。

  5. allkeys-random:从数据集中随机选择数据进行淘汰。

  6. no-enviction:禁止淘汰数据。


Redis的内存回收算法


Redis分布式锁

待总结。。。