Redis知识总结
Redis是一个开源的使用C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
以下是一些常见的Redis知识点和使用示例:
- 使用Redis存储会话信息
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
r.set('session_id', 'session_data')
session_data = r.get('session_id')
- 实现缓存
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
r.set('my_key', 'my_value')
value = r.get('my_key')
- 排行榜/计数
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
r.zadd('leaderboard', {'username': 1})
leaderboard = r.zrange('leaderboard', 0, -1, withscores=True)
- 发布/订阅
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
p = r.pubsub()
p.subscribe('my_channel')
r.publish('my_channel', 'my_message')
- 分布式锁
import redis
import time
import uuid
r = redis.Redis(host='localhost', port=6379, db=0)
lock_name = 'my_lock'
uid = str(uuid.uuid4())
end = time.time() + 10
while time.time() < end:
if r.set(lock_name, uid, ex=5, nx=True):
try:
# Do some work here
pass
finally:
if r.get(lock_name) == uid:
r.delete(lock_name)
break
time.sleep(0.1)
- 使用Redis进行缓存失效
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
r.set('key', 'value')
r.expire('key', 5) # 设置键的过期时间为5秒
- 使用Redis进行分页
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
cursor = '0'
while cursor != 0:
cursor, data = r.scan(cursor=cursor, match='pattern*', count=10)
for key in data:
# Do something with key
pass
- 使用Redis进行地理位置查询
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
r.geoadd('city', {'New York': [40.7128, -74.0060], 'Venice': [12.3456, -123.4567}})
distance = r.geodist('city', 'New York', 'Venice', 'm')
以上示例代码展示了Redis的基本使用,包括存储会话信息、实现缓存、排行榜/计数、发布/订阅、分布式锁、缓存失效、分页、地理位置查询等功能。开发者可以根据自己的需求选择合适的Redis功能和数据类型来应用。
评论已关闭