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

目录

一.安装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,并探索更多高级功能。

  • 30
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值