![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
redis
BanFS
欠的技术债,早晚要还
展开
-
redis cluster使用lua脚本的坑,非同一个slot也可以使用lua脚本
在项目中,需要用lua脚本操作redis cluster中的多个key,但是非同slot的时候会报错,例如下面test3、test6在同一个node,但是却不是同一个slot。redis使用lua脚本可以这样`redis-cli -a xxxxx--eval demo.lua key1 key2 , val1 val2`原创 2022-02-10 21:09:51 · 4437 阅读 · 1 评论 -
redis cluster 查看各个节点的slot
`redis-cli -p xxxx -c cluster nodes`原创 2022-02-10 20:38:56 · 1877 阅读 · 0 评论 -
redis 怎么查询一个key有多大
在项目开发过程中,最好是能估计出自己开发的功能要使用多大的redis内存使用redis自带的方法debug object key127.0.0.1:6006> get testkey"this is a test"127.0.0.1:6006> debug object testkeyValue at:0x7f4f19e2b500 refcount:1 encoding:embstr serializedlength:15 lru:14327341 lru_seconds_idle:原创 2022-01-09 17:06:27 · 8834 阅读 · 0 评论 -
docker 启动 redis cluster,使用出现CLUSTERDOWN Hash slot not served(redis cluster重新分配slot)
背景就像上一篇所说,我使用了docker-componse启动了redis cluster集群。经过了一天的测试,本来测试已经完毕了,但是今天修改了点代码,再次测试的时候发现redis cluster起不来了。报错CLUSTERDOWN Hash slot not served。从这个错误提示,可以看出是slot分配原因造成的。上网找,真的蛋疼,你复制我,我复制你,最后还是得自己解决。查看详细banfushen@banfushen:~/redis-cluster$ redis-cli -p 16379原创 2021-12-07 22:24:21 · 3903 阅读 · 0 评论 -
linux使用docker + docker compose 本地搭建redis cluster集群
背景项目用到一个redis库,对于里面的集群相关功能要自己测试(就像《代码简洁之道》中说的,使用第三方库需要自己有测试用例,这样即使第三方库更新了,直接用原来的测试用例,也知道是否能兼容)。所以需要自己本地搭建redis集群测试。搭建是使用docker搭建的,一下需要启动很多个container,所以使用docker-compose作为容器编排我的环境已经有了,没有的自己下载直接上redis-cluster模式redis集群有三种模式:master+slave(主从)、sentinel(哨兵)、cl原创 2021-12-05 23:19:04 · 1964 阅读 · 0 评论 -
redis集群数据倾斜查询过程
项目上redis cluster数据产生了倾斜,项目是有3个节点,但第一个节点用了80%的内存,第二第三个节点基本没存数据。redis cluster存贮规律redis 集群有16384个槽,会先对要存贮的key进行hash,将得到的结果放到对应的槽。一般会对整个key进行hash,如果key中含有{},会对{}中的字符串进行哈希。先查看集群中是否是因为key的原因造成倾斜redis-cli -h xxx.xxx.xxx.xxx -p xxx -ckeys *{*}*查看之后发现,并不是因为{原创 2021-07-23 18:08:05 · 456 阅读 · 1 评论 -
redis list插入失败,服务器与redis调试过程记录(redis连接列表,redis日志,redis监视着模式)。
前段时间在项目中碰到一个redis list插不进去的问题。背景是使用了redis list做消息队列,有两个服务器,server1存贮的redis string 类型的key的value是服务器1自己的mq1,server2要将消息插入server1的mq1。然后server1在读出这个mq1中存贮的消息。再去做一些业务操作。server1对mq1采用的是brpop,也就是阻塞的拿消息。下面将mq这个redis list的key成为mq1。我碰到了一个很奇葩的问题,server2从redis中读出了m原创 2021-07-20 21:29:02 · 656 阅读 · 1 评论 -
redis (error) MOVED 11863 xxx.xxx.xxx.xxx:6379
最近在集群中查询redis碰到这个问题,(error) MOVED 11863 xxx.xxx.xxx.xxx:6379简单查询后发现,是因为redis是集群方式的,而使用redis-cli连接redis的时候,没有指定集群模式,指定后即可。这样指定即可./redis-cli -h xxx.xxx.xxx -p 6379 -c...原创 2021-04-15 19:40:55 · 1659 阅读 · 0 评论 -
Redis中如何设置set中的元素过期
最近在工作中碰到了这个问题,我需要在一个set中记录集群中k8s pod的ip,但是pod随时会挂,所以采取一个定时让每个pod去update cache的做法。但是set中是无法设置其中元素过期时间的。有两个解决方法把set改用sorted set每个元素都带上分数,这个分数就是你的过期时间。先用ZRemRangeByScore删除过期元素(分数之外的元素),然后每个pod带上过期时间戳去定时去EasyZAdd,下面是伪代码for{ nowTime := time.Now().Unix() re原创 2021-04-15 19:30:53 · 6634 阅读 · 0 评论 -
redis 执行lua脚本实际项目的应用。
写博客还是习惯先写一下,写下这篇博客的原因。前几天撸的博客《使用redis做排行榜相同积分情况下,如何使用到达时间来排序》,我使用了这个方法修改了原来写的排行榜,之前的排行榜我是没有这样做。修改之后,需要运营先暂停排行榜,将之前排行榜的分数记录,发奖之后再开启新的排行榜。但是策划最后说我忘记了,周四更新之后,导致旧方法记录的分数存在,同时新方法也在记录分数,排行榜就乱了,只能临时暂停排行榜,等我修复后再开启。 混乱的原因是redis中记录的分数,旧分数是实际分数,新分数为 sc...原创 2020-07-13 09:16:03 · 582 阅读 · 0 评论 -
使用redis做排行榜相同积分情况下,如何使用到达时间来排序
好久没更新博客了,杂事多,其实还是就是自己懒惰了吧。哈哈哈哈。言归正传。 最近需求撸了个排行榜,是用redis实现的,依稀记得,前几个月去面试的时候,面试官老喜欢问我做过排行榜么,做过排行榜么,那时候还没做过,也知道是redis做的,以为会有点难度,但是其实并不难。技术就是这样的,不知道就难,知道了就简单,消除恐惧的最好方法就是面对恐惧,奥里给! redis的有序集合(sorted set),会元素都会关联一个double类型的分数。然后通过分数来为集合中的成员...原创 2020-07-07 19:59:41 · 2827 阅读 · 16 评论 -
Ubuntu连接redis时可指定ip,端口,密码。
转做游戏服务器开发之后,基本上都在写游戏逻辑,关于redis的操作也已经有了现成的接口。今天提交了代码有点空闲时间打算学一学redis。 博主是按照网上的教程使用redis-cli去连接redis,但是之前本地的redis已经改过redis的默认配置文件,直接使用redis-cil发现并不能连接上。 查询资料后发现可以指定ip,端口,和密码如下。...原创 2019-09-04 17:04:31 · 1428 阅读 · 0 评论 -
Ubuntu 18.04.3 安装redis,配置端口与密码
实际开发中,经常需要配置redis的端口与密码,硬盘坏了,换个硬盘,重新装开发环境 1.sudo apt-get install redis-server 2.查看是否安装成功,安装成功,会自动启动 ps -aux | grep redis 3.修改端口 sudo subl /etc/redis/...原创 2019-08-12 19:44:48 · 1384 阅读 · 0 评论