Redis使用(一) hash儲存與模糊查詢

2021-10-05 12:59:16 字數 1565 閱讀 6847

看本文章的前提是已掌握redis的基礎操作,如插入、讀取、刪除資料等

示例使用shardedjedispool操作,實際開發可以使用redistemplate

目錄:redis hset 命令用於為雜湊表中的字段賦值 。

如果雜湊表不存在,乙個新的雜湊表被建立並進行 hset 操作。

如果字段已經存在於雜湊表中,舊值將被覆蓋。

儲存的資料為乙個key中包含若干field,可以針對field模糊查詢

redis hset 命令基本語法如下:

redis 127.0.0.1:6379> hset key_name field value
redis 127.0.0.1:6379> hget key_name field_name
不能為每個field設定過期時間,只能對key設定過期時間,對同乙個key下所有field都生效

shardedjedis jedis = shardedjedispool.getresource();

scanparams params = new scanparams();

params.match("test*");

scanresult> scanresult = jedis.hscan("test_key", "0", params);

上面的**是查詢redis中key為「test_key」下所有field字首為"test"的資料

微博點贊操作,因為點讚是隨手的動作,導致資料請求頻繁,如果使用者每次點讚都寫入資料庫,會對資料庫造成很大壓力,這時可以使用redis快取點讚操作,然後定時從redis讀取快取,持久化至資料庫

例如:快取key為「weibo",點讚操作的field為"id:博文id:like:total", 值為點讚數量,每次有點贊可以將快取數量+1

//引數 1.key  2.field  3.增加數量

jedis.hincrby(key, field, 1);

取消點讚可以-1

jedis.hincrby(key, field, -1);
hincrby操作是單執行緒,無需擔心應用多執行緒操作造成資料錯誤

定時持久化至資料庫時可以使用模糊查詢查詢出快取所有博文的點讚數量

shardedjedis jedis = shardedjedispool.getresource();

scanparams params = new scanparams();

params.match("*:like:total");

scanresult> scanresult = jedis.hscan("weibo", "0", params);

注意:hscan的第二個引數為cursor。"0"代表從頭開始查詢,返回scanresult.getstringcursor()獲取下一次要查詢的cursor,根據獲取的cursor迴圈查詢值,直到通過scanresult.getstringcursor()返回值為"0"停止查詢

redis使用(二)—— geo位置與查周邊

Redis儲存資料 Hash型別

redis儲存hash型別的資料,就是map裡儲存map 儲存的map的key為欄位名,值為字段值 儲存資料 hset key 欄位名 字段值 127.0.0.1 6379 1 hset user username wlf integer 1 獲取資料hget key 欄位名 127.0.0.1 6...

redis使用hash型別儲存多樣化資料

import redis pool redis.connectionpool host localhost port 6379 conn redis.redis connection pool pool hset self,name key,value name對應的hash中設定乙個鍵值對 不存在...

Redis使用hash儲存PHP的二維陣列

由於業務需要,大量資料運算元據庫會給資料庫帶來很大的壓力,所以可以先把資料儲存在redis裡。host 127.0.0.1 port 6370 password redis new org util redis host,port,password arrays array id 0,usernam...