Redis
Redis 是一个高性能的键值存储数据库,适合存储临时数据或缓存。可以将用户的部分信息(如会话、登录状态、缓存数据)存储在 Redis 中。
安装
点击下载后将zip解压、并配置环境变量path中
使用
redis默认端口6379,redis-server启动服务,redis-cli客户端连接。
常用命令
数据类型 | 命令 | 描述 |
---|---|---|
通用命令 | KEYS pattern | 查找所有符合给定模式 pattern 的键。 |
DEL key | 删除指定的键。 | |
EXISTS key | 检查键是否存在。 | |
EXPIRE key seconds | 为键设置过期时间(以秒为单位)。 | |
TTL key | 获取键的剩余过期时间(以秒为单位)。 | |
TYPE key | 获取键的数据类型。 | |
FLUSHDB | 清空当前数据库。 | |
FLUSHALL | 清空所有数据库。 | |
字符串 | SET key value | 设置键的值。 |
GET key | 获取键的值。 | |
INCR key | 将键的值加 1(仅适用于整数)。 | |
DECR key | 将键的值减 1(仅适用于整数)。 | |
INCRBY key increment | 将键的值增加指定数值。 | |
DECRBY key decrement | 将键的值减少指定数值。 | |
APPEND key value | 将值追加到键的现有值末尾。 | |
STRLEN key | 获取键的值的长度。 | |
哈希 | HSET key field value | 设置哈希表中字段的值。 |
HGET key field | 获取哈希表中字段的值。 | |
HGETALL key | 获取哈希表中所有字段和值。 | |
HDEL key field | 删除哈希表中指定的字段。 | |
HEXISTS key field | 检查哈希表中字段是否存在。 | |
HKEYS key | 获取哈希表中所有字段。 | |
HVALS key | 获取哈希表中所有值。 | |
HINCRBY key field increment | 将哈希表中字段的值增加指定数值。 | |
列表 | LPUSH key value | 将值插入列表的头部。 |
RPUSH key value | 将值插入列表的尾部。 | |
LPOP key | 移除并返回列表的头部元素。 | |
RPOP key | 移除并返回列表的尾部元素。 | |
LLEN key | 获取列表的长度。 | |
LRANGE key start stop | 获取列表中指定范围的元素。 | |
LINDEX key index | 获取列表中指定索引的元素。 | |
LSET key index value | 设置列表中指定索引的元素值。 | |
集合 | SADD key member | 向集合中添加一个成员。 |
SREM key member | 从集合中移除一个成员。 | |
SMEMBERS key | 获取集合中的所有成员。 | |
SISMEMBER key member | 检查成员是否在集合中。 | |
SCARD key | 获取集合的成员数量。 | |
SINTER key1 key2 | 获取多个集合的交集。 | |
SUNION key1 key2 | 获取多个集合的并集。 | |
SDIFF key1 key2 | 获取多个集合的差集。 | |
有序集合 | ZADD key score member | 向有序集合中添加一个成员及其分数。 |
ZREM key member | 从有序集合中移除一个成员。 | |
ZRANGE key start stop [WITHSCORES] | 获取有序集合中指定范围的成员(按分数升序)。 | |
ZREVRANGE key start stop [WITHSCORES] | 获取有序集合中指定范围的成员(按分数降序)。 | |
ZSCORE key member | 获取有序集合中成员的分数。 | |
ZRANK key member | 获取有序集合中成员的排名(按分数升序)。 | |
ZREVRANK key member | 获取有序集合中成员的排名(按分数降序)。 | |
ZCARD key | 获取有序集合的成员数量。 | |
发布/订阅 | PUBLISH channel message | 向指定频道发布消息。 |
SUBSCRIBE channel | 订阅指定频道。 | |
UNSUBSCRIBE channel | 取消订阅指定频道。 | |
事务 | MULTI | 开启事务。 |
EXEC | 执行事务中的所有命令。 | |
DISCARD | 取消事务。 | |
脚本 | EVAL script numkeys key [key ...] arg [arg ...] | 执行 Lua 脚本。 |
Redis-Django
安装
pip install django-redis redis
配置
settings.py中配置
CACHES = {"default": {"BACKEND": "django_redis.cache.RedisCache","LOCATION": "redis://127.0.0.1:6379/1", # Redis 服务器的地址和端口 1是代表数据库 其中 1 是 Redis 数据库的编号(0-15)。"OPTIONS": {"CLIENT_CLASS": "django_redis.client.DefaultClient",}}
}# 如果你想要使用 Redis 作为 session 存储后端
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "default"
测试
测试连接是否正常
python manage.py shell
正常进入,使用help()命令查看其他命令,使用exit()或者quit()退出即可
测试使用set 和get编写测试程序
# myapp/test_redis.pyimport os
import django
from django.core.cache import cache# 设置 Django 环境 这个很关键否则平时自己写的直接运行不太行
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myweb.settings')
django.setup()def test_redis():# 测试 Redis 连接和基本操作cache.set('test_key', 'test_value', timeout=60)value = cache.get('test_key')if value == 'test_value':print('Redis test passed!')else:print('Redis test failed!')if __name__ == '__main__':test_redis()
使用
注意测试的时候启动项目这个是token的测试方式可以使用上面的测试方式,放到某个列表中测试下比如首页main.html中测试
python">from django.core.cache import cache# 存储数据到 Redis # timeout 是缓存过期时间,单位为秒
cache.set('userid+token', 'token', timeout=60)# 从 Redis 获取数据
value = cache.get('userid+token') is None
# Token过期需要重新登陆
print(value)