随笔分类 - Redis
摘要:SCAN命令可以为用户保证:从完整遍历开始直到完整遍历结束期间,一直存在于数据集内的所有元素都会被完整遍历返回,但是同一个元素可能会被返回多次。如果一个元素是在迭代过程中被添加到数据集的,又或者是在迭代过程中从数据集中被删除的,那么这个元素可能会被返回,也可能不会返回。 这是如何实现的呢,先从Red
阅读全文
摘要:在Redis中的LRU算法文中说到,LRU有一个缺陷,在如下情况下: 会将数据D误认为将来最有可能被访问到的数据。 Redis作者曾想改进LRU算法,但发现Redis的LRU算法受制于随机采样数maxmemory_samples,在maxmemory_samples等于10的情况下已经很接近于理想的
阅读全文
摘要:Redis作为缓存使用时,一些场景下要考虑内存的空间消耗问题。Redis会删除过期键以释放空间,过期键的删除策略有两种: 惰性删除:每次从键空间中获取键时,都检查取得的键是否过期,如果过期的话,就删除该键;如果没有过期,就返回该键。 定期删除:每隔一段时间,程序就对数据库进行一次检查,删除里面的过期
阅读全文
摘要:单线程与隔离性 Redis是使用单线程的方式来执行事务的,事务以串行的方式运行,也就是说Redis中单个命令的执行和事务的执行都是线程安全的,不会相互影响,具有隔离性。 在多线程编程中,对于共享资源的访问要十分的小心: 在不加锁的情况下,num是不能保持为1的。 而在Redis中,并发执行单个命令具
阅读全文