发布于2024-11-01 21:56 阅读(864) 评论(0) 点赞(5) 收藏(2)
目录
Redis(Remote Dictionary Server)是一个开源的、基于内存的键值存储数据库,支持多种数据结构,具有高性能、持久化等特点。它常被称为 "NoSQL" 数据库之一,专为快速访问和处理大量数据设计,广泛应用于缓存、实时分析、消息队列等场景。
Redis的特点主要有以下几种:
1. 内存存储,持久化支持
2.多种数据结构
3.持久化
4.高性能
5.分布式与高可用
6.Lua 脚本支持
7.事务支持
Redis的常用场景主要有5种,详情如下:
1.缓存
2.会话管理
3.消息队列
4.排行榜、计数器
5.实时数据分析
Redis的局限性有以下几点:
内存依赖性
持久化风险
分布式复杂性
- #将 key 设置为 value,如果键已经存在则覆盖
- SET key value
- #获取键 key 的值
- GET key
- #删除指定的键 key
- DEL key
- #返回 1 表示存在,0 表示不存在
- EXISTS key
- #为键 key 设置过期时间(单位为秒)。到期后,键会被自动删除
- EXPIRE key seconds
- #返回键 key 的剩余生存时间,单位为秒
- TTL key
- #返回与模式 pattern 匹配的所有键,例如 KEYS user* 匹配所有以 user 开头的键
- KEYS pattern
- #将键 key 的值加 1,如果键不存在,默认值为 0 后再加 1
- INCR key
- #将键 key 的值增加指定的整数 increment
- INCRBY key increment
- #将键 key 的值减 1
- DECR key
- #将键 key 的值减去指定的整数 decrement
- DECRBY key decrement
- #在键 key 的值末尾追加 value
- APPEND key value
- #将 value 插入到列表 key 的左侧
- LPUSH key value
- #将 value 插入到列表 key 的右侧
- RPUSH key value
- #移除并返回列表 key 的最左侧元素
- LPOP key
- #移除并返回列表 key 的最右侧元素
- RPOP key
- #返回列表 key 中指定范围的元素,start 和 stop 为索引,0 表示第一个元素,-1 表示最后一个元素
- LRANGE key start stop
- #返回列表 key 的长度
- LLEN key
- #向集合 key 中添加成员 member,如果成员已存在则不添加
- SADD key member
- #返回集合 key 中的所有成员
- SMEMBERS key
- #从集合 key 中移除指定的成员 member
- SREM key member
- #返回 1 表示 member 存在于集合 key 中,0 表示不存在
- SISMEMBER key member
- #返回给定集合的交集
- SINTER key1 key2 ... keyN
- #返回给定集合的并集
- SUNION key1 key2 ... keyN
- #返回 key1 和 key2 集合的差集,即 key1 中有而 key2 中没有的元素
- SDIFF key1 key2
- #将哈希表 key 中的字段 field 设置为 value,如果字段不存在则创建
- HSET key field value
- #返回哈希表 key 中字段 field 的值
- HGET key field
- #返回哈希表 key 中的所有字段及其对应的值
- HGETALL key
- #删除哈希表 key 中的字段 field
- HDEL key field
- #向有序集合 key 中添加成员 member,并设置其分数为 score
- ZADD key score member
- #返回有序集合 key 中,指定索引范围内的成员,按分数升序排列
- ZRANGE key start stop
- #返回有序集合 key 中,分数在 min 和 max 之间的成员
- ZRANGEBYSCORE key min max
- #移除有序集合 key 中的成员 member
- ZREM key member
Redis 支持事务,通过 MULTI
和 EXEC
组合使用。
- #开始事务
- MULTI
- #提交事务,执行所有事务内的命令
- EXEC
- #取消事务,放弃所有在事务中的命令
- DISCARD
- #向频道 channel 发布消息 message
- PUBLISH channel message
- #订阅频道 channel,当有新消息发布时,客户端会接收到消息
- SUBSCRIBE channel
- #取消对频道 channel 的订阅
- UNSUBSCRIBE channel
Redis 提供了多种持久化方式以防止数据丢失,包括 RDB(快照)和 AOF(追加文件)两种持久化机制。
- #手动保存 Redis 数据到磁盘
- SAVE
- #以后台异步方式保存 Redis 数据到磁盘
- BGSAVE
- #清除 Redis 中的所有数据
- FLUSHALL
- #返回 Redis 服务器的状态和统计信息
- INFO
- #列出所有连接到 Redis 的客户端信息
- CLIENT LIST
- #获取当前 Redis 的内存使用情况
- MEMORY STATS
- #关闭 Redis 服务器
- SHUTDOWN
Redis 提供了丰富的指令操作,涵盖基本的键值存储、列表、集合、有序集合、哈希等常用数据结构的操作。同时,Redis 还支持事务、持久化、发布订阅等功能。熟练掌握这些 Redis 的指令操作,可以帮助你在各种场景下高效管理和操作 Redis 数据库。
Redis 是一个高效的键值存储系统,Python 中有专门的库来与 Redis 交互,最常用的是 redis-py
库。redis-py
提供了对 Redis 数据库的大部分功能的支持,包括基本的键值存储、队列、发布订阅等操作。
在 Python 中使用 Redis 首先需要安装 redis-py
库。可以使用 pip
命令进行安装:
pip install redis
要连接到 Redis 服务器,需要创建一个 Redis
对象并指定连接的参数,默认情况下,Redis 运行在 localhost:6379,
例如:
- import redis
-
- # 创建一个 Redis 连接对象
- r = redis.Redis(host='localhost', port=6379, db=0)
Redis 最基本的存储类型是字符串,以下是一些常见的操作:
- # 设置键值对
- r.set('name', 'Alice')
-
- # 获取键的值
- name = r.get('name')
- print(name) # 输出: b'Alice' (Redis 默认返回字节类型)
-
- # 删除键
- r.delete('name')
Redis 支持列表类型,可以进行队列操作:
- # 向列表中从左插入元素
- r.lpush('mylist', 1, 2, 3) # 列表: [3, 2, 1]
-
- # 从列表右边弹出一个元素
- value = r.rpop('mylist')
- print(value) # 输出: b'1'
-
- # 获取列表的所有元素
- elements = r.lrange('mylist', 0, -1) # 获取整个列表
- print(elements) # 输出: [b'3', b'2']
Redis 也支持无序集合类型:
- # 添加集合成员
- r.sadd('myset', 'apple', 'banana', 'cherry')
-
- # 获取集合中的所有成员
- members = r.smembers('myset')
- print(members) # 输出: {b'apple', b'banana', b'cherry'}
-
- # 从集合中删除一个成员
- r.srem('myset', 'banana')
哈希可以看作是一个键对应多个字段的键值对集合:
- # 设置哈希表中的字段
- r.hset('myhash', 'field1', 'value1')
- r.hset('myhash', 'field2', 'value2')
-
- # 获取哈希表中的字段值
- value = r.hget('myhash', 'field1')
- print(value) # 输出: b'value1'
-
- # 获取哈希表中所有字段和值
- all_values = r.hgetall('myhash')
- print(all_values) # 输出: {b'field1': b'value1', b'field2': b'value2'}
有序集合支持按分数排序的元素:
- # 添加有序集合的成员
- r.zadd('myzset', {'apple': 1, 'banana': 2, 'cherry': 3})
-
- # 获取按分数排序的集合成员
- members = r.zrange('myzset', 0, -1)
- print(members) # 输出: [b'apple', b'banana', b'cherry']
-
- # 获取某个成员的分数
- score = r.zscore('myzset', 'banana')
- print(score) # 输出: 2.0
Redis 支持发布订阅消息机制:
- # 发布消息
- r.publish('mychannel', 'hello world')
-
- # 订阅频道
- pubsub = r.pubsub()
- pubsub.subscribe('mychannel')
-
- # 接收消息
- for message in pubsub.listen():
- print(message)
- # 输出: {'type': 'message', 'pattern': None, 'channel': b'mychannel', 'data': b'hello world'}
当不再需要使用 Redis 时,可以关闭连接:
r.close()
Redis 是一个非常高效、灵活的 NoSQL 数据库,广泛用于需要高速读写的场景,如缓存、消息队列、会话管理、排行榜等。通过丰富的数据结构、内存存储的特性、以及多种持久化和高可用性解决方案,Redis 在现代 web 应用和大型系统中占据了重要位置。然而,在使用 Redis 时,也需要注意内存管理、数据持久化和集群部署的复杂性。
原文链接:https://blog.csdn.net/2401_86688088/article/details/142462330
作者:无敌是多么寂寞
链接:https://www.pythonheidong.com/blog/article/2040780/ef3b226b3982d78d4d85/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!