《redis入门指南》摘抄笔记

原因服务器内存有限时,如果大量地使用缓存键且生存时间设置得过长就会导致Redis占满;另一方面如果为了防止Redis占用内存过大而将缓存键的生存时间得太短,就可能导致缓存命中率过低并且大量内存白白地闲置。实际开发中会发现很难为缓存键设置合理的生存时间,为些可以限制Redis能够使用的最大内存,并让Redis按照一定的规则淘汰不需要的缓存键,这种方式在只将Redis作缓存系统时非常实用。

具体的设置访求为:修改配置文件的maxmemory参数,限制Redis最大可用内存大小(单位是字节),当超出了这个限制时Redis依据maxmemory-policy参数指定的策略来删除不需要的键,直到Redis占用的内存小于指定内存。


Maxmemory-policy支持的规则LRU算法最近最少使用,其认为最近最少使用的键在未来一段时间内也不会被用到,即当需要空间时这些键是可以被删除的。

Redis如果通过LRU算法不断地删除数据库中最近最少使用的键,直到占用的内存小于限制值事实上Redis不会准确地将整个数据库中最久未被使用的键删除的,而是每次从数据库中随机取3键并删除这3键中最久未被使用的键删除重于生存时间最接近的键实现方法也是这样。随机取多少个的数值,是可以通过Redis配置文件中maxmemory-samples参数设置。

 

 

Redissort by操作时,如果参考包含“*”时,常量,与元素值无关,sort命令将不会执行排序操作,因为Redie认为所有要比较的值都一样这种情况是没有意义的,所以不进行排序。种情况在不需要排序但是需要借助sort命令,来获得元素相关的数据时还是有用的。当某个元素参考键不存在时,会默认参考值为0也就是以0来进行排序。但是“*”放在了->后面时,会当成是常量键名的,也是会排序,因为有“*”的存在,只过每次获取参考键的值一样,所以按照本身来排序。

你可能感兴趣的:(redis)