首页 > 数据库 >python学习—redis入门,新手小白轻松学

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

时间:2024-08-26 18:53:02浏览次数:14  
标签:输出 python Redis redis client key print 新手

目录

一.安装redis-py库

二.连接redis服务器

三.基本操作

(1)字符串

1.一次添加一个键值对

2. 一次添加多个键值对

3. 设置存在秒数

4. 设置过期时间(秒)

5. 设置存在天数

 完整代码

(2)列表

1. 添加数据

2. 从右侧删除数据

3. 从左侧删除数据

4. 获取列表的长度

5. 根据索引查找数据

6. 查找指定范围内的数据

7. 修剪列表

完整代码

(3)哈希

1. 创建哈希

2. 查找指定的键对应的值

3. 返回所有的键

 4. 返回所有的值

5. 查找哈希中所有的键值对

6. 删除指定的键

完整代码

(4)集合

1. 创建集合

2. 获取集合中元素的个数

3. 判断是否是集合中的成员

4. 查看集合中的所有成员

5. 删除指定数据

6. 获取交集

7. 获取并集

8. 获取差集

完整示例代码

(5)有序集合

1. 添加数据

2. 删除数据

3. 获取元素个数

4. 根据值取权重

5. 根据权重范围获取个数

6. 根据索引获取范围内的值

完整示例代码

总结


首先需要在自己的电脑上安装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

相关文章

  • 基于Python语言快速批量运行DSSAT模型及交叉融合、扩展
    随着数字农业和智慧农业的发展,基于过程的作物生长模型(Process-basedCropGrowthSimulationModel)在模拟作物对气候变化的响应与适应、农田管理优化、作物品种和株型筛选、农业碳中和、农田固碳减排等领域扮演着越来越重要的作用。DecisionSupportSystemsforAgrotechnolog......
  • 计算机毕业设计选题-基于python的医院预约挂号系统
    精彩专栏推荐订阅:在下方专栏......
  • PyInstaller 打包 Python 程序
    使用PyInstaller打包Python程序是一个相对简单直接的过程。PyInstaller允许你将Python程序及其所有依赖项打包成一个独立的可执行文件,这样用户就可以在没有安装Python解释器的系统上运行你的程序了。以下是一个基本的步骤指南,用于使用PyInstaller打包Python程......
  • Python 多线程编程技巧举例
    Python多线程(Multithreading)是一种编程技术,允许在同一程序中同时执行多个独立的逻辑流,即线程。每个线程都有自己的程序计数器、栈空间和局部变量,它们共享同一进程的全局变量、文件描述符和其他系统资源。线程是操作系统调度的基本单位,能够在单个进程中并发运行,从而实现任务......
  • Python未来五年的风口,抓住了未来就是你的!
    Python在未来五年的风口依然强劲,这主要得益于其在多个领域的广泛应用和持续增长的需求。以下是对Python未来五年风口的详细分析:1.人工智能与大数据领域主导地位:Python在人工智能(AI)和大数据领域已经占据主导地位,并且这一趋势在未来五年将持续加强。随着AI技术的不断发展和普......
  • 学会Python基础制作简单计算器(附源码)
    在Python中,我们可以使用tkinter库来制作一个具有图形用户界面的简单计算器。以下是一个完整的教程,包括设计思路、代码实现以及运行效果说明。设计思路在设计计算器程序时,我们需要考虑以下几个方面:界面设计:计算器需要一个简单的用户界面,用户可以通过该界面输入数字和运算符......
  • Python学习-[numpy库]-初级
    创建数组:np.array([1,2,3,4,5])使用zeros创建全零数组:np.zeros((3,2))代表一个三行二列的数组:array([0.,0.], [0.,0.], [0.,0.])获取数组的尺寸:a=np.zeros((3,2))a.shape#输出结果为:(3,2)第一个数据展示数组第一维的长度,第二个数据展示数......
  • Python分布式任务处理库之dramatiq使用详解
    概要在现代Web应用和数据处理任务中,异步任务处理是一个至关重要的部分。Dramatiq是一个用于分布式任务处理的Python库,旨在提供简单、可靠的任务队列解决方案。与其他任务队列库相比,Dramatiq更加轻量级,且易于上手。它的设计目标是帮助开发者轻松地将耗时的任务放到后台......
  • Python集成学习和随机森林算法使用详解
    概要集成学习是一种通过组合多个模型来提高预测性能的机器学习方法。它通过将多个弱学习器的结果结合起来,形成一个强学习器,从而提升模型的准确性和稳健性。随机森林(RandomForest)是集成学习中一种非常流行且有效的算法,特别适用于分类和回归任务。本文将详细介绍Python中如何......
  • PythonOS-原创高仿MS-DOS的Python程序
    这个Python程序需要依赖猿编程的内置模块,所以请先下载猿编程。00x1:代码部分PythonOS是免费且开源的。使用方法:在猿编程里点击代码实验室,点击加号添加作品,然后将代码复制到作品里(代码放在文末),然后在电脑桌面上建立一个文件夹,在文件夹里创建BootLoad.txt,内容为Load创建verin......