Redis 是一款开源的、高性能的键值对存储数据库。数据保存在内存里,所以读写速度非常快;支持的键值对数据类型包括:字符串、哈希、列表、集合、有序集合。
下文将列举部分在使用redis过程中的常用方法
读取整个redis数据库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| import redis
def read_db_redis(): rds = redis.Redis(host='XXXX', port=123456, db=1, password='XXXX') pipe = rds.pipeline() tag_db = {} cursor = 0 while True: cursor, keys = rds.scan(cursor, count=10000) for tag in keys: pipe.get(tag) result = pipe.execute() for tag, tag_id in zip(*(keys, result)): tag, tag_id = tag.decode('utf-8'), tag_id.decode('utf-8') tag_db[tag] = tag_id if cursor == 0: break return tag_db
|
清空整个redis库
1 2 3 4
| import redis
rds = redis.Redis(host='XXXX', port=123456, db=1, password='XXXX') rds.flushdb()
|
redis对5种数据类型的读写操作
1 2 3
| import redis
r = redis.Redis(host='XXXX', port=123456, db=1, password='XXXX')
|
字符串(String)
1 2 3 4 5 6
| r.set('name', 'Orange')
print(r.get('name'))
|
哈希(Hash)
1 2 3 4 5 6 7
| r.hset('user:1', 'name', 'Tom') r.hset('user:1', 'age', '18')
print(r.hgetall('user1'))
|
列表(List)
1 2 3 4 5 6 7 8
| r.lpush('mylist', 'a') r.lpush('mylist', 'b') r.lpush('mylist', 'c')
print(r.lrange('mylist', 0, -1))
|
集合(Set)
1 2 3 4 5 6 7 8
| r.sadd('myset', 'a') r.sadd('myset', 'b') r.sadd('myset', 'c')
print(r.smembers('myset'))
|
可以借助集合进行去重,求交集、并集、差集等操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| r.sadd('set1', 1, 2, 3, 4) r.sadd('set2', 3, 4, 5, 6)
print(r.sinter('set1', 'set2'))
print(r.sunion('set1', 'set2'))
print(r.sdiff('set1', 'set2'))
|
有序集合(Sorted Set)
1 2 3 4 5 6 7
| r.zadd('myzset', {'a': 1, 'b': 2, 'c': 3})
print(r.zrange('myzset', 0, -1, withscores=True))
|
有序集合可以用来实现排行榜等功能
1 2 3 4 5 6
| r.zadd('rank', {'Tom': 100, 'Jerry': 200, 'Alice': 300})
print(r.zrevrange('rank', 0, 2, withscores=True))
|