Redis日常使用

redis有很多數據結構

  1. string
  2. list
  3. hash
  4. set
  5. sorted set(zset)
  6. HyperLogLog
  7. bitmap
  8. geo

下邊就日常工作中中使用情況,介紹一下其各種數據結構主要應用場景。

String:存儲對象轉化類型,例如實體要在緩存中存儲,可以用工具類將實體序列化轉爲String存儲在redis中。

list:可做隊列用。rpushlpop有一些合體的命令,可以防止命令丟失,如處理一條消息時用rpoplpush,處理完畢後把備份的key中lpop掉。

flag =1
while(1==flag):
  try:
    tstr = time.strftime("%Y%m%d")
    info =  r.rpoplpush('a','b')
    if info is None:
      time.sleep(2);
    else:
     sendurl = url + info
     resultinfo = sendReq(sendurl)
     r.rpop('b')
  except:
     print(111)
  continue

上游:在日誌中檢測有個用戶在聽音樂,則向a寫入用戶的信息。

下游:如上述代碼處理業務的流程,輪詢彈出這個a的信息,如果沒有,等兩秒後繼續彈出,如果有,將它存入b,並進行發送處理,處理完畢後,將它從b中移除。

如果處理異常,則不從b中移除、可以定期從b中查看失敗的消息,做統一發送處理。

hash:存儲對象的一些信息,如活動初始化後,對接java中的map,泛型爲Map<String,String>

hset key a 1

hget key a   爲1

hgetall key     可以用java中的Map<String,String>承接

set:不重複的存儲key,常常用來判斷用戶是否參加。

sadd key a

sismember key a  返回true代表添加過,false沒有添加過

zset :常用來做列表

zrevrange key 0 -1 倒序排列

zadd key score member

 "data": [
        {
            "name": "kw1577342931141",
            "time": "2020-03-12 14:57:30",
            "desc": "dd"
        },
        {
            "name": "weibo1567738453",
            "time": "2020-03-12 11:07:31",
            "desc": "500元現金"
        },
        {
            "name": "aaa",
            "time": "2020-03-12 10:51:18",
            "desc": "優惠券"
        },
        {
            "name": "bbbb",
            "time": "2020-03-06 18:33:48",
            "desc": "100元現金"
        }
    ]

如上述結構 可以用  zadd mylist time name:desc:time來處理

zrevrange key 0 -1  出來info後,用String [] a = set.split(info,":")解析, a[0]代表name a[1]代表desc a[2]是錄入時間

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章