目录
概述
记录一下在SpringBoot中使用Redis出现的一个BUG。
报错回溯:我在将Map类型的值存储在redis中时没问题,当我使用方法randomEntry(),或 randomEntries() 读取redis中值时就会报错:io.lettuce.core.RedisCommandExecutionException: ERR unknown command ‘HRANDFIELD’
使用的代码:
如果你也出现了一样的报错,那我猜测你的redis服务开启在了windows环境下。
探索
首先声明:我是将Redis服务跑在了windows环境(测试环境)。
报错信息: “ERR unknown command ‘HRANDFIELD‘”。
错误表明 Redis 实例不支持 HRANDFIELD 命令。
HRANDFIELD 是 Redis 6.2.0 版本引入的新命令,用于在 Redis 哈希中随机获取字段和值。
那这样大概率就是Redis版本的问题了,从版本问题入手。
我检查了一下我的Redis版本,低的可怜,版本只有3.0.5,既然HRANDFIELD是Redis 6.2.0发布的,那么我就想着去找找高版本的吧。
但是,看到Redis官网我忽然清醒,Redis官网并没有去维护提供windows的版本。
起初有微软在维护windows版本的Redis。
但是在2016年7月1日微软就停止了更新维护,版本最新为3.0.504。
我还是没放弃,还是想在windows环境下进行测试。
所以又找到了一个还在更新维护Redis的Windows版本的团队。
直到2022年2月还在更新,版本更新到了5.0.14。
5.0.14版本还是没达到Redis 6.2.0 ,但是我还是试了一下,确实不行。
解决
提问newBing:
结论:由于目前windows没有6.2.0及以上的Redis版本。
所以只能在linux环境下载6.2.0或更高版本的Redis进行测试使用,就能解决ERR unknown command ‘HRANDFIELD’ 报错(已测试可用)。
没办法,最后还是使用了linux服务器开了Redis服务测试使用。
下面附上下载和配置Redis远程连接方法:
下载:Redis官网下载
下载好后:
1.将Redis安装包上传到Linux自定义目录(/usr/local/)。
2.解压安装包,命令: tar -zxvf redis-7.0.12.tar.gz
3.安装Redis的依赖环境gcc,命令:yuminstall gcc-c++
4.进入/usr/local/redis-7.0.12,进行编译,命令: make
5.进入redis的src目录,进行安装,命令: make install
6.在src目录下就会有redis-server 和 redis-cli 。
开启redis远程连接配置
修改根路径下的配置文件:redis.conf
修改3处
1.注释: #bind 127.0.0.1 (让所有ip可访问)
2.protected-mode no (改为no)
3.daemonize yes (改为yes)
(2和3不要直接加,在文件中找找修改,不然可能会被覆盖导致修改失败)
注意:记得开启服务器的6379端口,重启防火墙。
然后指定配置文件启动Redis服务,完毕。
到达redis-server的目录,执行:
nohup ./redis-server ../redis.conf
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/154524.html