您现在的位置是:网站首页 > 博客日记 >

python_redis入门

作者:YXN-python 阅读量:173 发布日期:2025-02-26

1.安装redis-py库

pip install redis

2.连接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()   # 关闭连接

3.基本操作

Redis支持的五种数据结构分别是 字符串, 列表, 哈希, 集合, 有序集合。

(1)字符串

在Redis中,字符串是最基本的数据结构之一。以下是一些使用redis-py库在Python中操作Redis字符串的示例代码,包括一次添加一个和多个键值对、设置存在秒数、设置过期时间以及设置存在天数。

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列表的示例代码,包括添加数据、删除数据、获取列表长度、根据索引查找数据、查找指定范围内的数据以及修剪列表。

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哈希的示例代码,包括创建哈希、查找指定的键对应的值、返回所有的键和值、查找哈希中所有的键值对以及删除指定的键。

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集合的示例代码,包括创建集合、获取集合中元素的个数、判断是否是集合中的成员、查看集合中的所有成员、删除指定数据、获取交集、并集和差集。

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有序集合的示例代码,包括添加数据、删除数据、获取元素个数、根据值取权重、根据权重范围获取个数以及根据索引获取范围内的值。

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)

总结

  • 字符串:适用于简单的键值对存储,如缓存、计数器等。
  • 列表:适用于队列、栈等需要有序集合的场景。
  • 集合:适用于需要无序、不重复元素的场景,如标签系统。
  • 哈希:适用于存储对象,如用户信息、配置信息等。
  • 有序集合:适用于需要按分数排序的场景,如排行榜、计分系统等。

 

原文:python学习—redis入门,新手小白轻松学

YXN-python

2025-02-26