redis
redis
优惠券已抵扣
余额抵扣
还需支付
¥39.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
scan724
这个作者很懒,什么都没留下…
展开
-
redis namespace
在Redis中,可以使用命令SET和GET来在命名空间中存储和获取数据。例如,SET namespace:key value表示在指定的命名空间中存储一个键值对,GETnamespace:key表示获取指定命名空间中的键对应的值。5.在命名空间中操作数据。原创 2023-09-17 18:19:23 · 265 阅读 · 0 评论 -
redis 打车实现
13 GEO是什么?还可以定义新的数据类型吗?用户在叫车的时候,叫车应用会根据用户的经纬度位置(例如经度 116.054579,纬度 39.030452),查找用户的附近车辆,并进行匹配GEOADD cars:locations 116.034579 39.030452 33GEOADD cars:locations 116.134579 39.030452 34GEOADD cars:locations 116.234579 39.030452 35GEOADD cars:loca.原创 2021-10-10 14:19:35 · 237 阅读 · 0 评论 -
哨兵发现机制
我来举个例子,具体说明一下。在下图中,哨兵 1 把自己的 IP(172.16.19.3)和端口(26579)发布到“__sentinel__:hello”频道上,哨兵 2 和 3 订阅了该频道。那么此时,哨兵 2 和 3 就可以从这个频道直接获取哨兵 1 的 IP 地址和端口号。然后,哨兵 2、3 可以和哨兵 1 建立网络连接。通过这个方式,哨兵 2 和 3 也可以建立网络连接,这样一来,哨兵集群就形成了。它们相互间可以通过网络连接进行通信,比如说对主库有没有下线这件事儿进行判断和协商。...原创 2021-09-22 11:30:26 · 154 阅读 · 0 评论 -
redis aof
毕竟,AOF 是以文件的形式在记录接收到的所有写命令。随着接收的写命令越来越多,AOF 文件会越来越大。这也就意味着,我们一定要小心 AOF 文件过大带来的性能问题。node2:/root/redis#tail -1000f appendonly.aof*20*3$3set$820210922$12zhaoyangjian*3$3set$820210921$12zhaoyangjian...原创 2021-09-21 15:32:34 · 124 阅读 · 0 评论 -
I/O多路复用
为了在请求到达时能通知到 Redis 线程,select/epoll 提供了基于事件的回调机制,即针对不同事件的发生,调用相应的处理函数。那么,回调机制是怎么工作的呢?其实,select/epoll 一旦监测到 FD 上有请求到达时,就会触发相应的事件。这些事件会被放进一个事件队列,Redis 单线程对该事件队列不断进行处理。这样一来,Redis 无需一直轮询是否有请求实际发生,这就可以避免造成 CPU 资源浪费。同时,Redis 在对事件队列中的事件进行处理时,会调用相应的处理函数,这就实现了基于事件..原创 2021-09-21 14:36:17 · 95 阅读 · 0 评论 -
redis hash冲突和rehash
redis哈希冲突,也就是指,两个 key 的哈希值和哈希桶计算对应关系时,正好落在了同一个哈希桶中。所以,Redis 会对哈希表做 rehash 操作。rehash 也就是增加现有的哈希桶数量,让逐渐增多的 entry 元素能在更多的桶之间分散保存,减少单个桶中的元素数量,从而减少单个桶中的冲突。那具体怎么做呢?...原创 2021-09-19 09:51:49 · 666 阅读 · 1 评论 -
叫车服务算法
我以叫车服务为例,来分析下 LBS 应用中经纬度的存取特点。每一辆网约车都有一个编号(例如 33),网约车需要将自己的经度信息(例如 116.034579)和纬度信息(例如 39.000452 )发给叫车应用。这种数据记录模式属于一个 key(例如车 ID)对应一个 value(一组经纬度)。我们先做第一次二分区操作,把经度区间[-180,180]分成了左分区[-180,0) 和右分区[0,180],此时,经度值 116.37 是属于右分区[0,180],所以,我们用 1 表示第一次二分区原创 2021-08-30 20:37:14 · 422 阅读 · 0 评论 -
使用redis进行分页
要完成这个统计任务,我们可以用一个集合记录所有登录过 App 的用户 ID,同时,用另一个集合记录每一天登录过 App 的用户 ID。然后,再对这两个集合做聚合统计。我们来看下具体的操作。此时,user:id 这个累计用户 Set 中就有了 8 月 3 日的用户 ID。等到 8 月 4 日再统计时,我们把 8 月 4 日登录的用户 ID 记录到 user:id:20200804 的 Set 中。接下来,我们执行 SDIFFSTORE 命令计算累计用户 Set 和 user:id:2020080原创 2021-08-29 13:53:53 · 1698 阅读 · 1 评论 -
redis cluster
但是,在使用的过程中,我发现,Redis 的响应有时会非常慢。后来,我们使用 INFO 命令查看 Redis 的 latest_fork_usec 指标值(表示最近一次 fork 的耗时),结果显示这个指标值特别高,快到秒级别了。node3:/root/cluster/7005#redis-cli -h 192.168.137.4 -p 7005192.168.137.4:7005> CLUSTER nodes191d7306b81ffa85b5837898562eb6bf147912.原创 2021-08-27 20:16:42 · 168 阅读 · 0 评论 -
哨兵作用1监控redis实例的运行情况
哨兵其实就是一个运行在特殊模式下的 Redis 进程,主从库实例运行的同时,它也在运行。哨兵主要负责的就是三个任务:监控、选主(选择主库)和通知。我们先看监控。监控是指哨兵进程在运行时,周期性地给所有的主从库发送 PING 命令,检测它们是否仍然在线运行。如果从库没有在规定时间内响应哨兵的 PING 命令,哨兵就会把它标记为“下线状态”;同样,如果主库也没有在规定时间内响应哨兵的 PING 命令,哨兵就会判定主库下线,然后开始自动切换主库的流程。9044:X 22 Aug 19:36:原创 2021-08-22 19:43:30 · 164 阅读 · 0 评论 -
redis bgsave
你可能会想到,可以用 bgsave 避免阻塞啊。这里我就要说到一个常见的误区了,避免阻塞和正常处理写操作并不是一回事。此时,主线程的确没有阻塞,可以正常接收请求,但是,为了保证快照完整性,它只能处理读操作,因为不能修改正在执行快照的数据。Redis 会使用 bgsave 对当前内存中的所有数据做快照,这个操作是子进程在后台完成的,这就允许主线程同时可以修改数据。...原创 2021-08-17 16:44:34 · 1366 阅读 · 0 评论 -
redis aof
目前,Redis 的持久化主要有两大机制,即 AOF(Append Only File)日志和 RDB 快照。在接下来的两节课里,我们就分别学习一下吧。这节课,我们先重点学习下 AOF 日志。说到日志,我们比较熟悉的是数据库的写前日志(Write Ahead Log, WAL),也就是说,在实际写数据前,先把修改的数据记到日志文件中,以便故障时进行恢复。不过,AOF 日志正好相反,它是写后日志,“写后”的意思是 Redis 是先执行命令,把数据写入内存,然后才记录日志,如下图所示:n原创 2021-08-16 11:21:14 · 98 阅读 · 0 评论 -
redis单线程 高并发实现原理
首先,我要和你厘清一个事实,我们通常说,Redis 是单线程,主要是指 Redis 的网络 IO 和键值对读写是由一个线程来完成的,这也是 Redis 对外提供键值存储服务的主要流程。但 Redis 的其他功能,比如持久化、异步删除、集群数据同步等,其实是由额外的线程执行的。针对监听套接字,我们可以设置非阻塞模式:当 Redis 调用 accept() 但一直未有连接请求到达时,Redis 线程可以返回处理其他操作,而不用一直等待。但是,你要注意的是,调用 accept() 时,已经存原创 2021-08-16 10:50:05 · 580 阅读 · 0 评论 -
redis rehash
一个哈希表,其实就是一个数组,数组的每个元素称为一个哈希桶。所以,我们常说,一个哈希表是由多个哈希桶组成的,每个哈希桶中保存了键值对数据。但是,如果你只是了解了哈希表的 O(1) 复杂度和快速查找特性,那么,当你往 Redis 中写入大量数据后,就可能发现操作有时候会突然变慢了。这其实是因为你忽略了一个潜在的风险点,那就是哈希表的冲突问题和 rehash 可能带来的操作阻塞。其实,为了使 rehash 操作更高效,Redis 默认使用了两个全局哈希表:哈希表 1 和哈希表 2。一开始,当原创 2021-08-16 08:58:10 · 203 阅读 · 0 评论 -
SimpleKV 持久化机制
一种方式是,对于每一个键值对,SimpleKV 都对其进行落盘保存,这虽然让 SimpleKV 的数据更加可靠,但是,因为每次都要写盘,SimpleKV 的性能会受到很大影响。另一种方式是,SimpleKV 只是周期性地把内存中的键值数据保存到文件中,这样可以避免频繁写盘操作的性能影响。但是,一个潜在的代价是 SimpleKV 的数据仍然有丢失的风险。...原创 2021-08-15 20:19:07 · 183 阅读 · 0 评论 -
redis-cluster 官方文档
Redis cluster tutorialRedis集群教程这个文档是一个平和的介绍 Redis Cluster, 它不是要复杂的来理解分布式系统内容。它提供了如何设置一个集群,测试和操作它 ,没有涉及redis cluster 特定的细节然而 这个教材 试图提供信息关于 Redis Cluster 的可用性和一致性行.注意:这个教材需要Redis 3.0或者以上版本:...原创 2020-03-29 20:05:07 · 708 阅读 · 0 评论 -
redis有间隔的kill 两个主:
1. 有间隔的kill 两个主:Connecting to 192.168.137.4:22...Connection established.Escape character is '^@]'.Last login: Sat Mar 14 07:01:36 2020 from 192.168.137.1node3:/root#ps -ef | grep rediroot ...原创 2020-03-15 10:39:49 · 216 阅读 · 0 评论 -
理解redis 分布式中的分片机制
理解redis 分布式中的分片机制?192.168.137.2:7000> cluster nodes9809b72ec290d73d99a3e1b0d12c4c7bf8583c45 192.168.137.3:7003@17003 slave 1b83e27acd5235726aea44702526a8ca0ede9a48 0 1581438332000 8 connected...原创 2020-02-11 16:32:15 · 369 阅读 · 0 评论 -
redis cluster<1>
Redis cluster tutorialRedis cluster 教学https://redis.io/topics/cluster-tutorial // redis clusterhttps://redis.io/topics/sentinel //redis sentinel这个文档是对Redis Cluster的简单介绍, 不使用复杂的来了解分...原创 2020-02-11 13:06:20 · 446 阅读 · 0 评论 -
Example 2: basic setup with three boxes 使用三个虚拟机
Example 2: basic setup with three boxes 使用三个虚拟机 +----+ | M1 | | S1 | +----+ |+----+ | +----+| R2 |----+----| R3 || S2 | | S3 |+----+ ...原创 2020-02-07 21:21:35 · 192 阅读 · 0 评论 -
4.2 复制:
4.2 复制:对于有扩展平台以适应更高负载经验的工程师和管理员来说,复制是不可或缺的。 复制可以让其他服务器拥有一个不断地更新的数据副本从而使得拥有数据副本的服务器可以用于处理客户端发送的读请求。4.2.1 对Redis的复制相关选项进行配置13725:M 14 Oct 16:50:03.879 - DB 0: 2 keys (0 volatile) in 4 slot...原创 2020-02-07 11:45:30 · 149 阅读 · 0 评论 -
AOF持久化
AOF:AOF :Redis 默认不开启。它的出现是为了弥补RDB的不足(数据的不一致性),所以它采用日志的形式来记录每个写操作,并追加到文件中。Redis 重启的会根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。AOF 持久化可以通过设置appendonly yes 配置选项来打开。appendfsync 选项及同比频率always ...原创 2020-02-06 10:36:30 · 218 阅读 · 0 评论 -
快照持久化RDB
快照持久化Redis 可以通过创建快照来获得存储在内存里面的数据在某个时间点上的副本dbfilename "dump.rdb"dir "/app/redis/redis-3.2.8/db"根据配置,快照将被写入dbfilename 选项指定的文件里面,并存储在dir选项指定的路径下。dbfilename "dump.rdb"dir "/app/redis/redis-...原创 2020-02-05 16:04:20 · 120 阅读 · 0 评论 -
基本的Redis事务
3.7.2 基本的Redis事务有时候为了同时处理多个结构,我们需要向Redis发送多个命令。尽管Redis 有几个可以在两个键之间复制或者移动元素的命令,但却没有那种可以在两个不同类型之间移动元素的命令 什么是Redis的基本事务Redis 的基本事务(basic transaction)需要用到MULTI命令和EXEC命令,这种事务可以让一个客户端在不被其他客户端打...原创 2020-02-04 15:44:29 · 168 阅读 · 0 评论 -
redis 发布与订阅
3.6 发布与订阅如果你因为想不起来本书在前面的哪个章节里面介绍过分布与订阅而困惑,那么大可不必 一般来说,发布与订阅(又称pub/sub)的特点是订阅者(listener)负责订阅频道(channel),发送者(publisher)负责向频道发送二进制字符串消息每当有消息被发送至给定频道时,频道的所有订阅者都会收到消息SUBSCRIBE SUBSCRIBE chan...原创 2020-02-04 12:12:31 · 140 阅读 · 0 评论 -
redis 获取key 过期时间
127.0.0.1:6379> keys *b4f107c6-e96c-4a1e-8402-a3be9a619847*1) "shiro_redis_session:b4f107c6-e96c-4a1e-8402-a3be9a619847"127.0.0.1:6379> get "shiro_redis_session:b4f107c6-e96c-4a1e-8402-a3be9a619847原创 2016-06-30 15:49:09 · 110339 阅读 · 4 评论 -
redis 主从切换
test_redis2:/etc# redis-cli 127.0.0.1:6379> auth '99999'OK127.0.0.1:6379> set aaa 999(error) READONLY You can't write against a read only slave.127.0.0.1:6379> redis-cli -p 6379 slaveof NO ONE原创 2015-10-08 20:26:38 · 481 阅读 · 0 评论 -
Perl 监控Redis
use Redis; use Sys::Hostname;use HTTP::Date qw(time2iso str2time time2iso time2isoz); use Net::SMTP;sub basic() { $host = hostname; @lines=qx|/sbin/ifconfig|; @ip; print "-" x原创 2015-08-11 21:58:58 · 774 阅读 · 0 评论 -
perl 操作redis
1.查看安装的redis版本jrhrpt01:/root# redis-server --versionRedis server v=2.8.19 sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 build=1138bcb7ae3eee58源码包为redis-2.8.19.tar.gz2.yum -y install gcc gcc-c++原创 2015-05-12 15:58:00 · 3621 阅读 · 0 评论 -
redis 搭建主从
redis 主:将主从redis配置文件redis.conf中的aemonize no 改为 yesjrhrpt01:/etc/redis# grep port redis.conf # Accept connections on the specified port, default is 6379.# If port 0 is specified Redis will not l原创 2015-05-12 17:20:32 · 937 阅读 · 0 评论 -
redis 安装
1.查看安装的redis版本jrhrpt01:/root# redis-server --versionRedis server v=2.8.19 sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 build=1138bcb7ae3eee58源码包为redis-2.8.19.tar.gz2.yum -y install gcc gcc-c++原创 2015-05-12 16:46:54 · 557 阅读 · 0 评论 -
redis maxmemory设置
关于maxmemory的设置,如果redis的应用场景是作为db使用,那不要设置这个选项,因为db是不能容忍丢失数据的。如果作为cache使用,则可以启用这个选项(其实既然有淘汰策略,那就是cache了。。。)指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key, # 当此方法处理后,仍然到达最大内存设置,将无原创 2016-09-15 14:35:44 · 4198 阅读 · 0 评论 -
redis 验证消息队列也是写磁盘的
# 下面的例子将会进行把数据写入磁盘的操作:# 900秒(15分钟)之后,且至少1次变更# 300秒(5分钟)之后,且至少10次变更# 60秒之后,且至少10000次变更## 注意:你要想不写磁盘的话就把所有 "save" 设置注释掉就行了。save 900 1save 300 10save 60 10000redis01:/data01/redis# cat /etc/r原创 2016-09-23 13:39:00 · 744 阅读 · 0 评论 -
redis 配置说明
daemonize yes ###以daemon方式运行pidfile /var/run/redis.pidport 6379tcp-backlog 511timeout 0tcp-keepalive 0loglevel noticelogfile /var/log/redis/redis.log databases 1save 10 1save 300 10save 6原创 2015-05-19 13:35:58 · 595 阅读 · 0 评论