目录
首先需要在自己的电脑上安装redis,再安装视图软件RDM,从而可以在pycharm中执行redis操作。
一.安装redis-py库
打开终端,输入指令
pip install redis
二.连接redis服务器
在Redis中,SELECT
命令用于切换到不同的数据库。Redis默认有16个数据库,编号从0到15。client.select(1)
命令用于切换到编号为1的数据库。
import redis # 导包
client = redis.Redis(db=0, password="123456")
client.select(1) # 选择redis对应的redis数据库
# 执行的操作
client.close() # 关闭连接
三.基本操作
Redis支持的五种数据结构分别是 字符串, 列表, 哈希, 集合, 有序集合。
(1)字符串
在Redis中,字符串是最基本的数据结构之一。以下是一些使用redis-py
库在Python中操作Redis字符串的示例代码,包括一次添加一个和多个键值对、设置存在秒数、设置过期时间以及设置存在天数。
1.一次添加一个键值对
import redis
# 连接到本地Redis实例
client = redis.Redis(host='localhost', port=6379, db=0)
# 一次添加一个键值对
client.set("id", 101)
print(client.get("id").decode()) # 输出: 101
2. 一次添加多个键值对
# 一次添加多个键值对
client.mset({"name1": "安好", "name2": "愿安"})
names = client.mget(['name1', 'name2'])
print([name.decode("utf8") for name in names]) # 输出: ['安好', '愿安']
3. 设置存在秒数
# 设置存在秒数
client.set('time_test', "毛毛")
client.expire('time_test', 100)
ttls = client.ttl('time_test')
print(ttls) # 输出: 100(假设还没有过期)
4. 设置过期时间(秒)
# 设置过期时间(秒)
client.setex('age', 200, '18')
# 获取剩余过期时间
ttls = client.ttl("age")
print(ttls) # 输出: 200(假设还没有过期)
5. 设置存在天数
from datetime import timedelta
# 设置存在天数
client.set("id", 102, ex=timedelta(days=7))
print(client.ttl("id")) # 输出: 604800(7天的秒数)
完整代码
import redis
from datetime import timedelta
# 连接到本地Redis实例
client = redis.Redis(host='localhost', port=6379, db=0)
# 一次添加一个键值对
client.set("id", 101)
print(client.get("id").decode()) # 输出: 101
# 一次添加多个键值对
client.mset({"name1": "安好", "name2": "愿安"})
names = client.mget(['name1', 'name2'])
print([name.decode("utf8") for name in names]) # 输出: ['安好', '愿安']
# 设置存在秒数
client.set('time_test', "毛毛")
client.expire('time_test', 100)
ttls = client.ttl('time_test')
print(ttls) # 输出: 100(假设还没有过期)
# 设置过期时间(秒)
client.setex('age', 200, '18')
# 获取剩余过期时间
ttls = client.ttl("age")
print(ttls) # 输出: 200(假设还没有过期)
# 设置存在天数
client.set("id", 102, ex=timedelta(days=7))
print(client.ttl("id")) # 输出: 604800(7天的秒数)
(2)列表
列表是一个有序的字符串集合,可以在列表的两端进行插入和删除操作。以下是一些使用redis-py
库在Python中操作Redis列表的示例代码,包括添加数据、删除数据、获取列表长度、根据索引查找数据、查找指定范围内的数据以及修剪列表。
1. 添加数据
import redis
# 连接到本地Redis实例
client = redis.Redis(host='localhost', port=6379, db=0)
# 从左侧添加数据
client.lpush("key_list", 1, 2, 3, 4, 5)
# 从右侧添加数据
client.rpush("key_list", 0, -1, -2)
2. 从右侧删除数据
# 从右侧删除数据
n = client.rpop("key_list")
print(n.decode()) # 输出: -2
3. 从左侧删除数据
# 从左侧删除数据
n = client.lpop("key_list")
print(n.decode()) # 输出: 5
4. 获取列表的长度
# 获取列表的长度
print(client.llen("key_list")) # 输出: 6(假设列表中还有 4, 3, 2, 1, 0, -1)
5. 根据索引查找数据
# 根据索引查找数据
print(client.lindex("key_list", 2)) # 输出: b'2'(假设列表中还有 4, 3, 2, 1, 0, -1)
6. 查找指定范围内的数据
# 查找指定范围内的数据
print(client.lrange("key_list", 1, 2)) # 输出: [b'3', b'2'](假设列表中还有 4, 3, 2, 1, 0, -1)
7. 修剪列表
# 修剪列表,使其只保留指定范围内的元素
client.ltrim("key_list", 1, 6)
完整代码
import redis
# 连接到本地Redis实例
client = redis.Redis(host='localhost', port=6379, db=0)
# 从左侧添加数据
client.lpush("key_list", 1, 2, 3, 4, 5)
# 从右侧添加数据
client.rpush("key_list", 0, -1, -2)
# 从右侧删除数据
n = client.rpop("key_list")
print(n.decode()) # 输出: -2
# 从左侧删除数据
n = client.lpop("key_list")
print(n.decode()) # 输出: 5
# 获取列表的长度
print(client.llen("key_list")) # 输出: 6(假设列表中还有 4, 3, 2, 1, 0, -1)
# 根据索引查找数据
print(client.lindex("key_list", 2)) # 输出: b'2'(假设列表中还有 4, 3, 2, 1, 0, -1)
# 查找指定范围内的数据
print(client.lrange("key_list", 1, 2)) # 输出: [b'3', b'2'](假设列表中还有 4, 3, 2, 1, 0, -1)
# 修剪列表,使其只保留指定范围内的元素
client.ltrim("key_list", 1, 6)
(3)哈希
哈希是一个键值对的集合,适合存储对象。以下是一些使用redis-py
库在Python中操作Redis哈希的示例代码,包括创建哈希、查找指定的键对应的值、返回所有的键和值、查找哈希中所有的键值对以及删除指定的键。
1. 创建哈希
import redis
# 连接到本地Redis实例
client = redis.Redis(host='localhost', port=6379, db=0)
# 创建哈希
client.hset("key_hash", "key1", "value1")
client.hset("key_hash", "key2", "value2")
2. 查找指定的键对应的值
# 查找指定的键对应的值
print(client.hget("key_hash", "key2")) # 输出: b'value2'
3. 返回所有的键
# 返回所有的键
print(client.hkeys("key_hash")) # 输出: [b'key1', b'key2']
4. 返回所有的值
# 返回所有的值
print(client.hvals("key_hash")) # 输出: [b'value1', b'value2']
5. 查找哈希中所有的键值对
# 查找哈希中所有的键值对
print(client.hgetall("key_hash")) # 输出: {b'key1': b'value1', b'key2': b'value2'}
6. 删除指定的键
# 删除指定的键
client.hdel("key_hash", 'key1')
完整代码
import redis
# 连接到本地Redis实例
client = redis.Redis(host='localhost', port=6379, db=0)
# 创建哈希
client.hset("key_hash", "key1", "value1")
client.hset("key_hash", "key2", "value2")
# 查找指定的键对应的值
print(client.hget("key_hash", "key2")) # 输出: b'value2'
# 返回所有的键
print(client.hkeys("key_hash")) # 输出: [b'key1', b'key2']
# 返回所有的值
print(client.hvals("key_hash")) # 输出: [b'value1', b'value2']
# 查找哈希中所有的键值对
print(client.hgetall("key_hash")) # 输出: {b'key1': b'value1', b'key2': b'value2'}
# 删除指定的键
client.hdel("key_hash", 'key1')
(4)集合
在Redis中,集合是一个无序的字符串集合,不允许重复元素。以下是一些使用redis-py
库在Python中操作Redis集合的示例代码,包括创建集合、获取集合中元素的个数、判断是否是集合中的成员、查看集合中的所有成员、删除指定数据、获取交集、并集和差集。
1. 创建集合
import redis
# 连接到本地Redis实例
client = redis.Redis(host='localhost', port=6379, db=0)
# 创建集合
client.sadd("key_set", 1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1)
client.sadd("key_set1", 1, 2, 3)
2. 获取集合中元素的个数
# 获取集合中元素的个数
print(client.scard("key_set")) # 输出: 6
3. 判断是否是集合中的成员
# 判断是否是集合中的成员,是返回1,不是返回0
print(client.sismember("key_set", 2)) # 输出: 1
4. 查看集合中的所有成员
# 查看集合中的所有成员
print(client.smembers("key_set")) # 输出: {b'1', b'2', b'3', b'4', b'5', b'6'}
5. 删除指定数据
# 删除指定数据
client.srem("key_set", 4, 5, 6)
6. 获取交集
# 获取交集
print(client.sinter(["key_set", "key_set1"])) # 输出: {b'1', b'2', b'3'}
7. 获取并集
# 获取并集
print(client.sunion(["key_set", "key_set1"])) # 输出: {b'1', b'2', b'3'}
8. 获取差集
# 获取差集
print(client.sdiff(["key_set", "key_set1"])) # 输出: set()
完整示例代码
import redis
# 连接到本地Redis实例
client = redis.Redis(host='localhost', port=6379, db=0)
# 创建集合
client.sadd("key_set", 1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1)
client.sadd("key_set1", 1, 2, 3)
# 获取集合中元素的个数
print(client.scard("key_set")) # 输出: 6
# 判断是否是集合中的成员,是返回1,不是返回0
print(client.sismember("key_set", 2)) # 输出: 1
# 查看集合中的所有成员
print(client.smembers("key_set")) # 输出: {b'1', b'2', b'3', b'4', b'5', b'6'}
# 删除指定数据
client.srem("key_set", 4, 5, 6)
# 获取交集
print(client.sinter(["key_set", "key_set1"])) # 输出: {b'1', b'2', b'3'}
# 获取并集
print(client.sunion(["key_set", "key_set1"])) # 输出: {b'1', b'2', b'3'}
# 获取差集
print(client.sdiff(["key_set", "key_set1"])) # 输出: set()
(5)有序集合
有序集合是一个有序的字符串集合,每个元素关联一个分数,用于排序。以下是一些使用redis-py
库在Python中操作Redis有序集合的示例代码,包括添加数据、删除数据、获取元素个数、根据值取权重、根据权重范围获取个数以及根据索引获取范围内的值。
1. 添加数据
import redis
# 连接到本地Redis实例
client = redis.Redis(host='localhost', port=6379, db=0)
# 添加数据
client.zadd("key_zset", {"a1": 10, "a2": 20, "a3": 30, "a5": 30})
2. 删除数据
# 删除数据
client.zrem("key_zset", "a2", "a3", "a1")
3. 获取元素个数
# 获取元素个数
print(client.zcard("key_zset")) # 输出: 2(假设删除了a1, a2, a3)
4. 根据值取权重
# 根据值取权重
print(client.zscore("key_zset", 'a3')) # 输出: None(假设a3已被删除)
5. 根据权重范围获取个数
# 根据权重范围获取个数
print(client.zcount("key_zset", 10, 30)) # 输出: 1(假设只剩下a5)
6. 根据索引获取范围内的值
# 根据索引获取范围内的值
print(client.zrange("key_zset", 0, 2)) # 输出: [b'a5'](假设只剩下a5)
完整示例代码
import redis
# 连接到本地Redis实例
client = redis.Redis(host='localhost', port=6379, db=0)
# 添加数据
client.zadd("key_zset", {"a1": 10, "a2": 20, "a3": 30, "a5": 30})
# 删除数据
client.zrem("key_zset", "a2", "a3", "a1")
# 获取元素个数
print(client.zcard("key_zset")) # 输出: 2(假设删除了a1, a2, a3)
# 根据值取权重
print(client.zscore("key_zset", 'a3')) # 输出: None(假设a3已被删除)
# 根据权重范围获取个数
print(client.zcount("key_zset", 10, 30)) # 输出: 1(假设只剩下a5)
# 根据索引获取范围内的值
print(client.zrange("key_zset", 0, 2)) # 输出: [b'a5'](假设只剩下a5)
总结
字符串:适用于简单的键值对存储,如缓存、计数器等。
列表:适用于队列、栈等需要有序集合的场景。
集合:适用于需要无序、不重复元素的场景,如标签系统。
哈希:适用于存储对象,如用户信息、配置信息等。
有序集合:适用于需要按分数排序的场景,如排行榜、计分系统等。
深入学习Redis和redis-py库的高级特性,如发布订阅、事务、Lua脚本等,可以进一步提高你的应用性能和可靠性。希望这篇总结对你有所帮助,鼓励你在实际项目中应用Redis,并探索更多高级功能。
标签:输出,python,Redis,redis,client,key,print,新手 From: https://blog.csdn.net/qq_62757859/article/details/141435999