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)
带有权重的元素,比如一个游戏的用户得分排行榜
过期项目处理,按照时间排序
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python操作Redis的5种数据类型 - Python技术站