Redis數(shù)據(jù)結構存儲系統(tǒng):第四章:底層實現(xiàn)原理
應用場景:
設置限制的優(yōu)惠活動的信息;
一些及時需要更新的數(shù)據(jù),積分排行榜;
手機驗證碼的時間;
限制網站訪客訪問頻率;
Redis數(shù)據(jù)結構存儲系統(tǒng):第四章:底層實現(xiàn)原理
Redis 以什么形式存儲數(shù)據(jù)? 什么是hash槽?
String(字符串) List(列表) Hash(字典) Set(集合) Sorted Set(有序集合)
Redis 集群中內置了 16384 個哈希槽,當需要在 Redis 集群中放置一個 key-value時,redis 先對 key 使用 crc16 算法算出一個結果,然后把結果對 16384 求余數(shù),這樣每個 key 都會對應一個編號在 0-16383 之間的哈希槽,redis 會根據(jù)節(jié)點數(shù)量大致均等的將哈希槽映射到不同的節(jié)點。Redis 集群沒有使用一致性hash, 而是引入了哈希槽的概念。每個key通過CRC16校驗后對16384取模來決定放置哪個槽.集群的每個節(jié)點負責一部分hash槽。這種結構很容易添加或者刪除節(jié)點,并且無論是添加刪除或者修改某一個節(jié)點,都不會造成集群不可用的狀態(tài)。當需要增加節(jié)點時,只需要把其他節(jié)點的某些哈希槽挪到新節(jié)點就可以了;當需要移除節(jié)點時,只需要把移除節(jié)點上的哈希槽挪到其他節(jié)點就行了;
使用RedisTemplate 進行緩存
@Autowired
private RedisTemplate redisTemplate;
添加到緩存,TbItemCatOneExample:給的名字,0表示通過0找到TbItemCatOneExample中以0為標識的數(shù)據(jù)
//從庫中獲取的數(shù)據(jù)
List selectAll = itemCatMapper.selectAll();
redisTemplate.boundHashOps(“TbItemCatOneExample”).put(0, selectAll);
redisTemplate.boundHashOps(“TbItemCatOneExample”).delete(0);
redisTemplate.boundHashOps(“TbItemCatOneExample”).get(0);