1.連接redis(兩種方式)
# decode_responses=True: 解決獲取的值類型是bytes字節問題 r = redis.Redis(host='localhost', port='6379', db=0, decode_responses=True)
pool = redis.ConnectionPool(host='localhost', port=6379, db=0, decode_responses=True) r = redis.Redis(connection_pool=pool)
2.字符串類型 String
# ex過期時間 單位秒S r.set('name', 'Jack', ex=20) rst = r.get('name') print(rst) 結果: "Jack"
3.列表類型 list
r.lpush('object', 'one') r.lpush('object', 'two') r.lpush('object', 'three') r.lpush('object', 'four') r.lpush('object', 'five') r.lpush('object', 'six') ret = r.lrange('object', 0, 5) print(ret[::-1], len(ret)) 結果: ['one', 'two', 'three', 'four', 'five', 'six'] 6
4.哈希類型 hash
r.hset('user:info', 'name', 'Jack') r.hset('user:info', 'age', 20) r.hset('user:info', 'phone', '18712909999') r.hset('user:info', 'email', '123@gmail.com') rst = r.hgetall('user:info') print(rst) 結果: {'age': '20', 'email': '123@gmail.com', 'name': 'Jack', 'phone': '18712909999'}
5.集合類型 set
r.sadd('set', 'one') r.sadd('set', 'two') r.sadd('set', 'three') res = r.smembers('set') print(res) 結果: {'two', 'one', 'three'}
6.有序集合類型 sorted set
r.zadd('mark', 'one', 1) r.zadd('mark', 'two', 2) r.zadd('mark', 'three', 3) r.zadd('mark', 'four', 4) r.zadd('mark', 'five', 5) result = r.zrange('mark', 0, 10) print(result) 結果: ['one', 'two', 'three', 'four', 'five']
7. Redis的5種數據類型的使用場景
String
計數器應用
List
取最新N個數據的操作
消息隊列
刪除與過濾
實時分析正在發生的情況,用於數據統計與防止垃圾郵件(結合Set)
Set
Uniqe操作,獲取某段時間所有數據排重值
實時系統,反垃圾系統
共同好友、二度好友
利用唯一性,可以統計訪問網站的所有獨立IP
好友推薦的時候,根據tag求交集,大於某個threshold就可以推薦
Hashes
存儲、讀取、修改用戶屬性
Sorted Set
排行榜應用,取TOP N操作
需要精准設定過期時間的應用(時間戳作為Score)
帶有權重的元素,比如一個游戲的用戶得分排行榜
過期項目處理,按照時間排序