![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
redis
文章平均质量分 90
一起学python吧
你学废了吗
展开
-
aiomysql、asyncpg、aioredis
Python 目前已经进化到了 3.11 版本,对操作数据库也提供了相应的异步支持。当我们做一个 Web 服务时,性能的瓶颈绝大部分都在数据库上,如果一个请求从数据库中读数据的时候能够自动切换、去处理其它请求的话,是不是就能提高并发量了呢。下面我们来看看如何使用 Python 异步操作 MySQL、PostgreSQL 以及 Redis,以上几个可以说是最常用的数据库了。至于 SQLServer、Oracle,本人没有找到相应的异步驱动,有兴趣可以自己去探索一下。而操作数据库无非就是增删改查,下面我们来看看原创 2023-07-10 09:44:55 · 853 阅读 · 0 评论 -
python操作redis
python操作Redis一. Redis是什么Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scr原创 2022-08-26 09:22:36 · 5254 阅读 · 0 评论 -
redis之三十三:Redis 问题汇总和相关解决方案
本文收集了一些 Redis 使用中经常遇到的一些问题,和与之相对应的解决方案,这些内容不但会出现在实际工作中,也是面试的高频问题,接下来一起来看。缓存雪崩缓存雪崩是指在短时间内,有大量缓存同时过期,导致大量的请求直接查询数据库,从而对数据库造成了巨大的压力,严重情况下可能会导致数据库宕机的情况叫做缓存雪崩。我们先来看下正常情况下和缓存雪崩时程序的执行流程图,正常情况下系统的执行流程如下图所示:缓存雪崩的执行流程,如下图所示:以上对比图可以看出缓存雪崩对系统造成的影响,那如何解决缓原创 2022-01-18 15:01:04 · 137 阅读 · 0 评论 -
redis之三十二:实战:Redis 集群模式(下)
上篇文章我们讲了 Redis 集群的搭建与节点的动态添加和删除,我们这里再来简单的复习一下,其中 30001~30006 是我们最初搭建的集群,而 30007 和 30008 是后面动态添加的主从节点,我们使用--cluster info命令来看一下主节点和槽位的分配情况,执行代码如下:$ redis-cli --cluster info 127.0.0.1:30001127.0.0.1:30001 (887397e6...) -> 0 keys | 5461 slots | 1 slav..原创 2022-01-18 11:40:57 · 1217 阅读 · 0 评论 -
redis之三十一:实战:Redis 集群模式(上)
Redis Cluster 是 Redis 3.0 版本推出的 Redis 集群方案,它将数据分布在不同的服务区上,以此来降低系统对单主节点的依赖,并且可以大大的提高 Redis 服务的读写性能。Redis 将所有的数据分为 16384 个 slots(槽),每个节点负责其中的一部分槽位,当有 Redis 客户端连接集群时,会得到一份集群的槽位配置信息,这样它就可以直接把请求命令发送给对应的节点进行处理。Redis Cluster 是无代理模式去中心化的运行模式,客户端发送的绝大数命令会直接交给相关原创 2022-01-18 11:33:23 · 262 阅读 · 0 评论 -
redis之三十:实战:Redis哨兵模式(下)
实战:Redis 哨兵模式(下)上一篇我们介绍了 Redis Sentinel 的搭建和运行原理,本文我们重点来看下 Sentinel 的命令操作和代码实战。Sentinel 命令操作要使用 Sentinel 实现要连接到 Sentinel 服务器,和连接 Redis 服务相同,我们可以使用 redis-cli 来连接 Sentinel,如下命令所示:[@iZ2ze0nc5n41zomzyqtksmZ:~]$ redis-cli -h 127.0.0.1 -p 26379 -a pwd65原创 2022-01-18 11:30:56 · 443 阅读 · 0 评论 -
redis之二十九:实战:Redis哨兵模式(上)
上一篇我们讲了主从复制模式,它是属于 Redis 多机运行的基础,但这种模式本身存在一个致命的问题,当主节点奔溃之后,需要人工干预才能恢复 Redis 的正常使用。例如,我们有 3 台服务器做了主从复制,一个主服务器 A 和两个从服务器 B、C,当 A 发生故障之后,需要人工把 B 服务器设置为主服务器,同时再去 C 服务器设置成从服务器并且从主服务器 B 同步数据,如果是发生在晚上或者从服务器节点很多的情况下,对于人工来说想要立即实现恢复的难度很多,所以我们需要一个自动的工具——Redis Senti原创 2022-01-18 11:05:22 · 243 阅读 · 0 评论 -
redis之二十八 -- Redis实战:Redis 主从同步
主从同步(主从复制)是 Redis 高可用服务的基石,也是多机运行中最基础的一个。我们把主要存储数据的节点叫做主节点 (master),把其他通过复制主节点数据的副本节点叫做从节点 (slave),如下图所示:在 Redis 中一个主节点可以拥有多个从节点,一个从节点也可以是其他服务器的主节点,如下图所示:主从同步的优点主从同步具有以下三个优点:性能方面:有了主从同步之后,可以把查询任务分配给从服务器,用主服务器来执行写操作,这样极大的提高了程序运行的效率,把所有压力分摊到各个服务器原创 2022-01-18 10:36:55 · 498 阅读 · 0 评论 -
redis之二十七 -- Redis 性能优化方案
Redis 是基于单线程模型实现的,也就是 Redis 是使用一个线程来处理所有的客户端请求的,尽管 Redis 使用了非阻塞式 IO,并且对各种命令都做了优化(大部分命令操作时间复杂度都是 O(1)),但由于 Redis 是单线程执行的特点,因此它对性能的要求更加苛刻,本文我们将通过一些优化手段,让 Redis 更加高效的运行。本文我们将使用以下手段,来提升 Redis 的运行速度:缩短键值对的存储长度; 使用 lazy free(延迟删除)特性; 设置键值的过期时间; 禁用耗时长的查询命令原创 2022-01-17 17:13:20 · 756 阅读 · 0 评论 -
redis之二十六 -- Redis 慢查询
Redis 慢查询作用和 MySQL 慢查询作用类似,都是为我们查询出不合理的执行命令,然后让开发人员和运维人员一起来规避这些耗时的命令,从而让服务器更加高效和健康的运行。对于单线程的 Redis 来说,不合理的使用更是致命的,因此掌握 Redis 慢查询技能对我们来说非常的关键。如何进行慢查询?在开始之前,我们先要了解一下 Redis 中和慢查询相关的配置项,Redis 慢查询重要的配置项有以下两个:slowlog-log-slower-than:用于设置慢查询的评定时间,也就是说超过此配置项原创 2022-01-12 17:41:00 · 362 阅读 · 0 评论 -
redis之二十五 -- Redis 性能测试
为什么需要性能测试?性能测试的使用场景有很多,例如以下几个:技术选型,比如测试 Memcached 和 Redis; 对比单机 Redis 和集群 Redis 的吞吐量; 评估不同类型的存储性能,例如集合和有序集合; 对比开启持久化和关闭持久化的吞吐量; 对比调优和未调优的吞吐量; 对比不同 Redis 版本的吞吐量,作为是否升级的一个参考标准。等等,诸如此类的情况,我们都需要进行性能测试。性能测试的几种方式既然性能测试使用场景那么多,那要怎么进行性能测试呢?目前比较主流的性原创 2022-01-12 17:24:34 · 536 阅读 · 0 评论 -
redis之二十四 -- RediSearch 高性能的全文搜索引擎
RediSearch 是一个高性能的全文搜索引擎,它可以作为一个 Redis Module(扩展模块)运行在 Redis 服务器上。RediSearch 主要特性如下:基于文档的多个字段全文索引 高性能增量索引 文档排序(由用户在索引时手动提供) 在子查询之间使用 AND 或 NOT 操作符的复杂布尔查询 可选的查询子句 基于前缀的搜索 支持字段权重设置 自动完成建议(带有模糊前缀建议) 精确的短语搜索 在许多语言中基于词干分析的查询扩展 支持用于查询扩展和评分的自定义函数 将原创 2022-01-10 18:36:12 · 3044 阅读 · 0 评论 -
redis之二十三 -- 定时任务案例
我在开发的时候曾经遇到了这样一个问题,产品要求给每个在线预约看病的患者,距离预约时间的前一天发送一条提醒推送,以防止患者错过看病的时间。这个时候就要求我们给每个人设置一个定时任务,用前面文章说的延迟队列也可以实现,但延迟队列的实现方式需要开启一个无限循环任务,那有没有其他的实现方式呢?答案是肯定的,接下来我们就用 Keyspace Notifications(键空间通知)来实现定时任务,定时任务指的是指定一个时间来执行某个任务,就叫做定时任务。开启键空间通知默认情况下 Redis 服务器端是不开原创 2022-01-07 17:22:18 · 918 阅读 · 0 评论 -
redis之二十二 -- 实现延迟队列的两种方法
延迟队列是指把当前要做的事情,往后推迟一段时间再做。延迟队列在实际工作中和面试中都比较常见,它的实现方式有很多种,然而每种实现方式也都有它的优缺点,接下来我们来看。延迟队列的使用场景延迟队列的常见使用场景有以下几种:超过 30 分钟未支付的订单,将会被取消 外卖商家超过 5 分钟未接单的订单,将会被取消 在平台注册但 30 天内未登录的用户,发短信提醒等类似的应用场景,都可以使用延迟队列来实现。常见实现方式Redis 延迟队列实现的思路、优点:目前市面上延迟队列的实现方式基本分原创 2022-01-05 17:35:26 · 3067 阅读 · 0 评论 -
redis之二十一 -- 布隆过滤器安装与使用及原理分析
我们前面有讲到过 HyperLogLog 可以用来做基数统计,但它没提供判断一个值是否存在的查询方法,那我们如何才能查询一个值是否存在于海量数据之中呢?如果使用传统的方式,例如 SQL 中的传统查询,因为数据量太多,查询效率又低有占用系统的资源,因此我们需要一个优秀的算法和功能来实现这个需求,这是我们今天要讲的——布隆过滤器。开启布隆过滤器在 Redis 中不能直接使用布隆过滤器,但我们可以通过 Redis 4.0 版本之后提供的 modules(扩展模块)的方式引入,本文提供两种方式的开启方式原创 2022-01-05 15:57:47 · 653 阅读 · 0 评论 -
redis之二十 -- 分布式锁详解与代码
什么是锁?锁是一种常用的并发控制机制,用于保证一项资源在任何时候只能被一个线程使用,如果其他线程也要使用同样的资源,必须排队等待上一个线程使用完。锁的示意图,如下所示:什么是分布式锁?上面说的锁指的是程序级别的锁,例如 Java 语言中的 synchronized 和 ReentrantLock 在单应用中使用不会有任何问题,但如果放到分布式环境下就不适用了,这个时候我们就要使用分布式锁。分布式锁比较好理解就是用于分布式环境下并发控制的一种机制,用于控制某个资源在同一时刻只能被一个应原创 2022-01-05 11:28:15 · 216 阅读 · 0 评论 -
redis之十九 -- 消息队列终极解决方案——Stream(下)
在开始使用消息分组之前,我们必须手动创建分组才行,以下是几个和 Stream 分组有关的命令,我们先来学习一下它的使用。消息分组命令创建消费者群组127.0.0.1:6379> xgroup create mq group1 0-0 OK相关语法:xgroup create stream-key group-key ID其中:mq 为 Stream 的 key; group1 为分组的名称; 0-0 表示从第一条消息开始读取。如果要从当前最后一条消息向后读取原创 2021-12-30 17:45:34 · 1059 阅读 · 1 评论 -
redis之十九 -- 消息队列终极解决方案——Stream(上)
在 Redis 5.0 Stream 没出来之前,消息队列的实现方式都有着各自的缺陷,例如:发布订阅模式 PubSub,不能持久化也就无法可靠的保存消息,并且对于离线重连的客户端不能读取历史消息的缺陷; 列表实现消息队列的方式不能重复消费,一个消息消费完就会被删除; 有序集合消息队列的实现方式不能存储相同 value 的消息,并且不能阻塞读取消息。并且以上三种方式在实现消息队列时,只能存储单 value 值,也就是如果你要存储一个对象的情况下,必须先序列化成 JSON 字符串,在读取之后还要反序列原创 2021-12-15 18:06:55 · 2437 阅读 · 0 评论 -
redis之十八(消息队列的其他实现方式)
在 Redis 5.0 之前消息队列的实现方式有很多种,比较常见的除了我们上文介绍的发布订阅模式,还有两种:List 和 ZSet 的实现方式。List 和 ZSet 的方式解决了发布订阅模式不能持久化的问题,但这两种方式也有自己的缺点,接下来我们一起来了解一下,先从 List 实现消息队列的方式说起。List 版消息队列List 方式是实现消息队列最简单和最直接的方式,它主要是通过 lpush 和 rpop 存入和读取实现消息队列的,如下图所示:List 使用命令的方式实现消息队列:原创 2021-12-13 15:41:48 · 149 阅读 · 0 评论 -
redis之十七(消息队列——发布订阅模式)
在 Redis 中提供了专门的类型:Publisher(发布者)和 Subscriber(订阅者)来实现消息队列。在文章开始之前,先来介绍消息队列中有几个基础概念,以便大家更好的理解本文的内容。首先,发布消息的叫做发布方或发布者,也就是消息的生产者,而接收消息的叫做消息的订阅方或订阅者,也就是消费者,用来处理生产者发布的消息。除了发布和和订阅者,在消息队列中还有一个重要的概念:channel 意为频道或通道,可以理解为某个消息队列的名称,首先消费者先要订阅某个 channel,然后当生产者把原创 2021-12-13 15:19:56 · 2414 阅读 · 0 评论 -
redis之十六(内存淘汰机制与算法)
在本文开始之前,我们先要明白:在 Redis 中,过期策略和内存淘汰策略两个完全不同的概念,但很多人会把两者搞混。首先,Redis 过期策略指的是 Redis 使用那种策略,来删除已经过期的键值对;而 Redis 内存淘汰机制指的是,当 Redis 运行内存已经超过 Redis 设置的最大内存之后,将采用什么策略来删除符合条件的键值对,以此来保障 Redis 高效的运行。过期策略前面的文章,我们已经详细地讲过了,本文我们重点来看 Redis 的内存淘汰机制。Redis 最大运行内存只有在 R原创 2021-11-22 17:30:33 · 372 阅读 · 0 评论 -
redis之十五(游标迭代器(过滤器)——Scan)
一个问题引发的「血案」曾经发生过这样一件事,我们的 Redis 服务器存储了海量的数据,其中登录用户信息是以 user_token_id 的形式存储的。运营人员想要当前所有的用户登录信息,然后悲剧就发生了:因为我们的工程师使用了keys user_token_*来查询对应的用户,结果导致 Redis 假死不可用,以至于影响到线上的其他业务接连发生问题,然后就收到了一堆的系统预警短信。并且这个假死的时间是和存储的数据成正比的,数据量越大假死的时间就越长,导致的故障时间也越长。那如何避免这个问题呢?..原创 2021-11-22 16:11:45 · 2658 阅读 · 0 评论 -
redis全集
python操作Redis一. Redis是什么Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scr原创 2021-11-22 15:50:52 · 114 阅读 · 0 评论 -
redis之十四(优秀的基数统计算法——HyperLogLog)
为什么要使用 HyperLogLog?在我们实际开发的过程中,可能会遇到这样一个问题,当我们需要统计一个大型网站的独立访问次数时,该用什么的类型来统计?如果我们使用 Redis 中的集合来统计,当它每天有数千万级别的访问时,将会是一个巨大的问题。因为这些访问量不能被清空,我们运营人员可能会随时查看这些信息,那么随着时间的推移,这些统计数据所占用的空间会越来越大,逐渐超出我们能承载最大空间。例如,我们用 IP 来作为独立访问的判断依据,那么我们就要把每个独立 IP 进行存储,以 IP4 来计算,I原创 2021-11-15 15:55:54 · 248 阅读 · 0 评论 -
redis之十三(查询附近的人——GEO)
受过高等教育的我们都知道,我们所处的任何位置都可以用经度和纬度来标识,经度的范围 -180 到 180,纬度的范围为 -90 到 90。纬度以赤道为界,赤道以南为负数,赤道以北为正数;经度以本初子午线(英国格林尼治天文台)为界,东边为正数,西边为负数。Redis 在 3.2 版本中增加了 GEO 类型用于存储和查询地理位置,关于 GEO 的命令不多,主要包含以下 6 个:geoadd:添加地理位置 geopos:查询位置信息 geodist:距离统计 georadius:查询某位置内的其他成员原创 2021-11-15 14:53:12 · 532 阅读 · 1 评论 -
redis之十二(Redis 管道技术——Pipeline)
管道技术(Pipeline)是客户端提供的一种批处理技术,用于一次处理多个 Redis 命令,从而提高整个交互的性能。通常情况下 Redis 是单行执行的,客户端先向服务器发送请求,服务端接收并处理请求后再把结果返回给客户端,这种处理模式在非频繁请求时不会有任何问题。但如果出现集中大批量的请求时,因为每个请求都要经历先请求再响应的过程,这就会造成网络资源浪费,此时就需要管道技术来把所有的命令整合一次发给服务端,再一次响应给客户端,这样就能大大的提升了 Redis 的响应速度。普通命令模式,如下图原创 2021-11-14 21:22:47 · 469 阅读 · 0 评论 -
redis之十一(Redis 过期策略与源码分析)
在 Redis 中我们可以给一些元素设置过期时间,那当它过期之后 Redis 是如何处理这些过期键呢?过期键执行流程Redis 之所以能知道那些键值过期,是因为在 Redis 中维护了一个字典,存储了所有设置了过期时间的键值,我们称之为过期字典。过期键判断流程如下图所示:过期键源码分析过期键存储在 redisDb 结构中,源代码在 src/server.h 文件中:/* Redis database representation. There are multiple data原创 2021-11-14 20:26:15 · 1208 阅读 · 1 评论 -
redis之十(Redis 键值过期操作)
过期设置Redis 中设置过期时间主要通过以下四种方式:expire key seconds:设置 key 在 n 秒后过期; pexpire key milliseconds:设置 key 在 n 毫秒后过期; expireat key timestamp:设置 key 在某个时间戳(精确到秒)之后过期; pexpireat key millisecondsTimestamp:设置 key 在某个时间戳(精确到毫秒)之后过期;下面分别来看以上这些命令的具体实现。expire:N 秒后过原创 2021-11-14 17:24:41 · 447 阅读 · 0 评论 -
redis之九(Redis 事务深入解析)
作为关系型数据库中一项非常重要的基础功能——事务,在 Redis 中是如何处理并使用的?前言事务指的是提供一种将多个命令打包,一次性按顺序地执行的机制,并且保证服务器只有在执行完事务中的所有命令后,才会继续处理此客户端的其他命令。事务也是其他关系型数据库所必备的基础功能,以支付的场景为例,正常情况下只有正常消费完成之后,才会减去账户余额。但如果没有事务的保障,可能会发生消费失败了,但依旧会把账户的余额给扣减了,我想这种情况应该任何人都无法接受吧?所以事务是数据库中一项非常重要的基础功能。.原创 2021-11-14 11:32:10 · 266 阅读 · 0 评论 -
redis之八(Redis持久化--混合持久化)
RDB 和 AOF 持久化各有利弊,RDB 可能会导致一定时间内的数据丢失,而 AOF 由于文件较大则会影响 Redis 的启动速度,为了能同时使用 RDB 和 AOF 各种的优点,Redis 4.0 之后新增了混合持久化的方式。在开启混合持久化的情况下,AOF 重写时会把 Redis 的持久化数据,以 RDB 的格式写入到 AOF 文件的开头,之后的数据再以 AOF 的格式化追加的文件的末尾。混合持久化的数据存储结构如下图所示:1 开启混合持久化查询是否开启混合持久化可以使用conf.原创 2021-11-13 21:26:21 · 574 阅读 · 0 评论 -
redis之八(Redis持久化--AOF)
使用 RDB 持久化有一个风险,它可能会造成最新数据丢失的风险。因为 RDB 的持久化有一定的时间间隔,在这个时间段内如果 Redis 服务意外终止的话,就会造成最新的数据全部丢失。可能会操作 Redis 服务意外终止的条件:安装 Redis 的机器停止运行,蓝屏或者系统崩溃; 安装 Redis 的机器出现电源故障,例如突然断电; 使用kill -9 Redis_PID等。那么如何解决以上的这些问题呢?Redis 为我们提供了另一种持久化的方案——AOF。1 简介AOF(Appen..原创 2021-11-13 21:09:40 · 1311 阅读 · 0 评论 -
redis之七(Redis持久化--RDB)
Redis 的读写都是在内存中,所以它的性能较高,但在内存中的数据会随着服务器的重启而丢失,为了保证数据不丢失,我们需要将内存中的数据存储到磁盘,以便 Redis 重启时能够从磁盘中恢复原有的数据,而整个过程就叫做 Redis 持久化。Redis 持久化也是 Redis 和 Memcached 的主要区别之一,因为 Memcached 不具备持久化功能。1 持久化的几种方式Redis 持久化拥有以下三种方式:快照方式(RDB, Redis DataBase)将某一个时刻的内存数..原创 2021-11-13 20:45:10 · 381 阅读 · 0 评论 -
python 操作redis之六(有序集合)
有序集合使用与内部实现原理有序集合类型 (Sorted Set) 相比于集合类型多了一个排序属性 score(分值),对于有序集合 ZSet 来说,每个存储元素相当于有两个值组成的,一个是有序结合的元素值,一个是排序值。有序集合的存储元素值也是不能重复的,但分值是可以重复的。当我们把学生的成绩存储在有序集合中时,它的存储结构如下图所示:下面我们先从有序集合的使用开始说起。1 代码实战from redis import StrictRedisredis_cli = Stri.原创 2021-11-13 17:06:34 · 1094 阅读 · 0 评论 -
python 操作redis之五(集合)
集合使用与内部实现原理集合类型 (Set) 是一个无序并唯一的键值集合。之所以说集合类型是一个无序集合,是因为它的存储顺序不会按照插入的先后顺序进行存储,如下代码所示:127.0.0.1:6379> sadd myset v2 v1 v3 #插入数据 v2、v1、v3 (integer) 3127.0.0.1:6379> smembers myset #查询数据1) "v1"2) "v3"3) "v2"从上面代码执行结果可以看出,myset 的存储顺序并不是以插入的原创 2021-11-13 16:14:10 · 1472 阅读 · 0 评论 -
python 操作redis之一(Redis 是如何执行的?)
命令执行流程一条命令的执行过程有很多细节,但大体可分为:客户端先将用户输入的命令,转化为 Redis 相关的通讯协议,再用 socket 连接的方式将内容发送给服务器端,服务器端在接收到相关内容之后,先将内容转化为具体的执行命令,再判断用户授权信息和其他相关信息,当验证通过之后会执行最终命令,命令执行完之后,会进行相关的信息记录和数据统计,然后再把执行结果发送给客户端,这样一条命令的执行流程就结束了。如果是集群模式的话,主节点还会将命令同步至子节点,下面我们一起来看更加具体的执行流程。步骤一:用原创 2021-11-09 15:32:28 · 343 阅读 · 0 评论 -
python 操作redis之二(字符串)
字符串使用与内部实现原理Redis 发展到现在已经有 9 种数据类型了,其中最基础、最常用的数据类型有 5 种,它们分别是:字符串类型、列表类型、哈希表类型、集合类型、有序集合类型,而在这 5 种数据类型中最常用的是字符串类型,所以本文我们先从字符串的使用开始说起。字符串类型的全称是 Simple Dynamic Strings 简称 SDS,中文意思是:简单动态字符串。它是以键值对 key-value 的形式进行存储的,根据 key 来存储和获取 value 值,它的使用相对来说比较简单,但在实际原创 2021-11-09 15:46:16 · 505 阅读 · 0 评论 -
python 操作redis之三(哈希)
字典使用与内部实现原理字典类型 (Hash) 又被成为散列类型或者是哈希表类型,它是将一个键值 (key) 和一个特殊的“哈希表”关联起来,这个“哈希表”表包含两列数据:字段和值。例如我们使用字典类型来存储一篇文章的详情信息,存储结构如下图所示:同理我们也可以使用字典类型来存储用户信息,并且使用字典类型来存储此类信息,是不需要手动序列化和反序列化数据的,所以使用起来更加的方便和高效。1.基础使用from redis import StrictRedisredis_cli = Stri原创 2021-11-09 17:17:51 · 1649 阅读 · 1 评论 -
python 操作redis之四(列表)
列表使用与内部实现原理列表类型 (List) 是一个使用链表结构存储的有序结构,它的元素插入会按照先后顺序存储到链表结构中,因此它的元素操作 (插入\删除) 时间复杂度为 O(1),所以相对来说速度还是比较快的,但它的查询时间复杂度为 O(n),因此查询可能会比较慢。1 基础使用列表类型的使用相对来说比较简单,对它的操作就相当操作一个没有任何 key 值的 value 集合,如下图所示:2 代码实现from redis import StrictRedisredis_cli =.原创 2021-11-10 17:52:57 · 1474 阅读 · 0 评论 -
单台linux(centos)搭建redis集群
LINUX安装REDIS集群linux安装单机版redis已经在另一篇文章说过了,下边来搞集群,环境是腾讯云服务器:redis3.0以后开始支持集群。前言:redis用什么做集群? 用一个叫redis-trib.rb的ruby脚本。redis-trib.rb是redis官方推出的管理redis集群的工具,集成在redis的源码src目录下(redis-xxx/src/)。是基于redis提供的集群命令封装成简单、便捷、实用的操作工具。redis-trib.rb是redis作者用ruby完成原创 2021-08-27 17:22:28 · 334 阅读 · 0 评论 -
centos安装redis
安装gcc 执行yum -y install gcc命令:yum -y install gcc2.下载Redis安装包 linux中cd到相应的目录下(/usr/share/man/man1 这是我存放的目录)执行下面命令下载wget http://download.redis.io/releases/redis-3.2.9.tar.gz3. 将下载好的软件包复制一份到/usr/local并cd到该目录下解压,然后将其名称更改为redisc...原创 2020-07-17 14:32:47 · 112 阅读 · 0 评论