安裝
pip3 freeze|grep -i redis
pip3 install redis
操作流程
1,建立連接對象
import redis
r = redis.Redis(host='127.0.0.1',port=6379,db=0,password='123456')
2,連接對象.redis命令即可
例如:r.set(key,value)
說明:大部分命令跟redis終端中使用雷同
位圖
常用命令
- setbit key index (0|1)
- key 不存在時,初始化最小字節數的bit位,默認補0
- key存在時:滿足長度要求,直接修改當前bit位,不滿足的話在原有value上初始化最小字節數的bit位。
setbit key offset
獲取某一位上的值,返回0或1bitcount key start end
統計key的值中有多少個1
注:start和end是字節的索引而不是bit位的索引
應用場景
- 假設現在我們希望記錄自己網站上的用戶上線頻率,比如說計算用戶A上線了多少天,用戶B上線了多少天,諸如此類,此作爲數據,從而決定讓哪些用戶參加重要活動——這個模式可以使用SETBIT和SETCOUNT來實現。
哪天上線就在那一天的offset值1。
哈希
定義
- 由field和關聯的value組成的鍵值對
- field和value必須是字符串類型
- 一個hash中最多包含2^32-1個鍵值對
優缺點
優點:
- 節約內存空間-特定條件下【1、字段小於512個,2、value不能超過64字節】,如果超過了條件,則不是用散列算法存了。會影響效率。
- 可按需獲取字段的值
缺點: - 使用過期key功能,key過期功能只能對key進行過期操作,而不能對散列的字段進行過期操作
- 存儲消耗大於字符串結構
常用命令
- hset key field value
- hsetnx key field value
field不存在則存 - hmset key field value field value
設置多個字段 - hlen key
返回字段個數 - hexists key field
判斷字段是否存在,不存在返回0 - hget key field
返回字段值 - hmget key field field
返回多個字段值 - hgetall key
返回所有鍵值對 - hkeys key
返回key所有的字段名 - hvals key
返回key所有值 - hdel key field
刪除key的field - hincrby key field increment
- hincrbyfloat key field increment
在字段對應值上進行整數增量運算
應用場景
1、用戶維度數據統計
原理:基於hash壓縮特點,和字段可計數
用戶維度統計
統計包括:關注數、粉絲數、喜歡商品數、發帖數
用戶key,不同維度爲field,value爲統計數
比如關注了5人
hset user:10000 fans 5
hincrby user:10000 fans 1
hincrby user:10000 fans -1
2、緩存
redis+mysql+hash組合使用
原理:可以按需求取出字段數據,也比較適合做緩存
示例:
用戶想要查詢個人信息
1、到redsi中查詢個人信息
2、redis中查不到,到mysql查詢,並緩存到redis
3、再次查詢個人信息
集合
基礎概念
1、無序、去重
2、元素是字符串類型
3、最多包含2^32-1個元素
類似於Python中所學集合
常用命令
- sadd key member1 member2
增加一個或多個元素,自動去重,返回值爲成功插入到集合的元素個數 - smembers key
查看集合中的所有元素 - srem key member1 member2
刪除一個或多個元素,元素不存在自動忽略 - sismemeber key member
元素是否存在 - srandmember key [count]
隨機返回集合中指定個數的元素,默認爲1個 - spop key [count]
彈出成員 - scard key
返回集合中元素的個數 - smove source destination member
把元素從源集合移動到目標集合 - sdiff key1 key2
差集(number1 1 2 3 number2 1 2 4 結果爲3(左減右爲3)) - sdiffstore destination key1 key2
差集保存到另一個集合中 - sinter key1 key2
- sinterstore destination key1 key2
交集 - sunion key1 key2
- sunionstore destination key1 key2
並集
應用場景
社交類平臺,共同好友-交集
純隨機類抽獎
防止元素重複
黑/白名單
集合如果元素全是整型並且元素個數512個以內,用的是數組實現,否則用的是哈希
- object encoding 集合key
返回該集合的底層實現
hashtable | intset
有序集合
基礎概念
1、有序,去重
2、元素是字符串類型
3、每個元素都關聯着一個浮點數分值(score),並按照分值從小到大的順序排列集合中的元素(分值可以相同)
4、最多包含2^32-1個元素
常用命令
- zadd key score member
在有序集合中添加一個成員,返回值是成功插入到集合中的元素個數 - zrange key start stop [withscore]
查看指定區間元素(升序) - zrevrange key start stop [withscore]
查看指定區間元素(降序) - zscore key member
查看指定元素的分值 - zrangebyscore key min max [withscore] [limit offset count]
返回指定區間元素
參數說明:
min/max:最小值最大值區間,默認閉區間(大於等於或小於等於);(min,可開啓開區間(大於或小於))
offset:跳過多少個元素
count:返回幾個
limit:選項跟mysql一樣 - zrem key member
刪除成員 - zincrby key increment member
增加或減少分值 - zrank key member
返回元素排名 - zremrangebyscore key min max
刪除指定區間內的元素(默認閉區間,可做開區間) - zcard key
返回集合中元素的個數 - zcount key min max
返回指定範圍中元素的個數(默認閉區間,可做開區間) - zunionstore destination numkeys key [weights權重值] [aggregate sum|min|max]
zunionstore salary3 2 salary salary2 weight 1 0.5 aggregate max
2代表集合數量,weights之後,權重1給salary,權重0.5給salary2集合,算完權重之後執行聚合aggregate
應用場景
各種排行榜