redis-cli

Redis 应用场景之短信验证码

对着背影说爱祢 提交于 2019-12-26 21:06:29
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 应用场景 以 OSChina 账号注册 为例...讲错了请留言批评指正... 逻辑场景 用户操作: 用户输入手机号, 然后点击获取验证码. 前端逻辑: ajax 发起请求, 参数带上手机号. 后端逻辑: 获取请求参数, 生成6位数验证码, 给指定手机号发送短信, 并缓存一个30秒过期的键值, mobilephone=checkcode, 比如 135xxx=123456 用 redis-cli 操作的话命令如下: // 设置一个缓存 key=手机号 value=验证码, 30秒后过期自动删除 127.0.0.1:6379> set 135xxx 123456 OK 127.0.0.1:6379> expire 135xxx 30 (interger) 1 用户操作: 用户收到短信验证码后,输入验证码,点击注册. 前端逻辑: ajax 请求接口, 参数带上发送手机号 & 短信验证码. 后端逻辑: 拿着请求参数中的手机号做为 redis key 去找值 用 redis-cli 操作的话命令如下: 127.0.0.1:6379> get 135xxx "123456" 如果没过期的话会输出对应的验证码 "123456", 程序里做判断比对. 如果等待30s过期的话, redis-cli 操作输出如下: 127.0.0

Duplicate a key in redis

馋奶兔 提交于 2019-12-24 00:38:49
问题 Can I duplicate a key using the redis-cli connected, is there any command predefined in redis or not? Duplicate FSS_SYSAGENT to FSS_SYSAGENTDuplicate. 10.44.112.213:6403> hgetall FSS_SYSAGENT 1) "SYSTEM_01" 2) "{\"port\":\"4407\",\"ipAddress\":\"10.44.112.213\",\"symbolicName\":\"SYSTEM_01\",\"eventLogEnabled\":\"1110\",\"status\":1,\"wcPort\":\"6029\",\"activeSystem\":\"N\",\"createdBy\":\"\",\"createdDate\":\"2018-11-20 13:11:16\",\"modifiedBy\":\"\",\"modifiedDate\":\"\",\"institution\":\

Redis之Cluster究极菜鸟的自我记录

百般思念 提交于 2019-12-18 17:40:30
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 环境版本 redis 5.0 vmware 上安装的centos 7 Cluster介绍 Redis Cluster是Redis的分布式解决方案 Redis Cluster采用虚拟槽分区,所有的键根据哈希函数映射到0~16383整数槽内,计算公式:slot = CRC16(key) & 16383。 每一个节点负责维护一部分槽以及槽所映射的键值数据。 搭建集群 Redis集群一般由多个节点组成,节点数量至少为6个才能保证组成完整高可用的集群。每个节点都要开启配置cluster-enabled yes,让redis运行在集群的模式下。建议为集群被所有节点统一目录,一般划为为:conf、data、logs,分别存放配置文件,数据和日志。 如下图:(端口6379-6384,是开始的集群配置,6385,6386是用来后期测试集群的扩容和伸缩) 在data目录中创建对应的文件夹存放数据,结果如下图 配置文件的内容如下,每个端口做对应的修改 启动所有的redis服务,为了方便写了一个 start-all.sh 查看redis启动的进程,ps -ef | grep redis redis服务启动完成之后,启动cluster,本文采用的redis 5.0 命令如下,其中--replicas参数指定集群中每个主机点配备几个从节点

set json value from file to redis

 ̄綄美尐妖づ 提交于 2019-12-12 19:25:11
问题 I have a bash.sh script: #!/usr/bin/env bash val=$(cat ../my-microservice/conf/config.json) echo "set my-microservice-config ${val}" | redis-cli where the config.json: { "key" : "value" } When I run it I got: ERR unknown command '}' How to set a json value properly from the json file? 回答1: If you are trying to set the string value of my-microservice-config key to the contents of your JSON file (or any other for that matter, including binary), the simplest approach is to use the -x option in

redis hmget with wildcard fields

自作多情 提交于 2019-12-12 03:02:29
问题 I have a hashset in redis like below. "abcd" : { "rec.number.984567": "value1", "rec.number.973956": "value2", "rec.number.990024": "value3", "rec.number.910842": "value4", "rec.number.910856": "...", "other.abcd.efgh": "some value", "other.xyza.blah": "some other value" "..." : "...", "..." : "...", "..." : "...", "..." : "..." } if I call hgetall abcd, it will give me all fields in the hash. My objective is to get only those fields of the hashset that begin with "rec.number". When I call

Why Redis keys are not expiring?

雨燕双飞 提交于 2019-12-11 04:12:50
问题 I have checked these questions but they did not help me to fix my issue. I am using Redis as a key value store for Rate Limiting in my Spring REST application using spring-data-redis library. I test with huge load. In that I use the following code to store a key and I am setting the expire time as well. Most of the time the key expires as expected. But some times the key is not expiring! code snippet RedisAtomicInteger counter = counter = new RedisAtomicInteger("mykey"); counter.expire(1,

redis-cli redirected to 127.0.0.1

∥☆過路亽.° 提交于 2019-12-10 16:46:14
问题 I started Redis cluster on PC1, then connected it on PC2. When needed to redirect to another cluster node, it shows Redirected to slot [7785] located at 127.0.0.1 , but should show Redirected to slot [7785] located at [IP of PC1, like 192.168.1.20] , then it shows an error. What is happening? What can I do? The output: [admin@localhost ~]$ redis-cli -c -h 192.168.1.20 -p 30001 192.168.1.20:30001> get foo -> Redirected to slot [12182] located at 127.0.0.1:30003 Could not connect to Redis at

redis运行一段时间之后假死

微笑、不失礼 提交于 2019-12-07 03:47:58
现象:redis运行一段时间之后就会出现假死的现象 假死指的是:进程在、pid在、telnet 端口是通的、redis-cli命令可以连接,但无法查询数据,查询的时候报错,如下图: 可以看到这个报错是有关权限的,但可以确认该redis并没有设置密码,况且已经运行了一段时间之后,突然开始不正常的 尝试解决: 观察redis的运行日志发现在重启redis的时候会有warning,如下图 因为没有报错所有先解决warning,然后经过各种尝试,得解决方案如下: 1. 修改内核参数,3种方法,任选其一: 1)编辑/etc/sysctl.conf ,改vm.overcommit_memory=1,然后sysctl -p 使配置文件生效 2)sysctl vm.overcommit_memory=1 3)echo 1 > /proc/sys/vm/overcommit_memory 2. 修改redis.conf,然后重启redis maxmemory 3G maxmemory-policy allkeys-lru maxmemory-samples 3 来源: oschina 链接: https://my.oschina.net/jack088/blog/3138243

redis运行一段时间之后假死

故事扮演 提交于 2019-12-07 03:46:56
现象:redis运行一段时间之后就会出现假死的现象 假死指的是:进程在、pid在、telnet 端口是通的、redis-cli命令可以连接,但无法查询数据,查询的时候报错,如下图: 可以看到这个报错是有关权限的,但可以确认该redis并没有设置密码,况且已经运行了一段时间之后,突然开始不正常的 尝试解决: 观察redis的运行日志发现在重启redis的时候会有warning,如下图 因为没有报错所有先解决warning,然后经过各种尝试,得解决方案如下: 1. 修改内核参数,3种方法,任选其一: 1)编辑/etc/sysctl.conf ,改vm.overcommit_memory=1,然后sysctl -p 使配置文件生效 2)sysctl vm.overcommit_memory=1 3)echo 1 > /proc/sys/vm/overcommit_memory 2. 修改redis.conf,然后重启redis maxmemory 3G maxmemory-policy allkeys-lru maxmemory-samples 3 来源: oschina 链接: https://my.oschina.net/jack088/blog/3138243

redis运行一段时间之后假死

有些话、适合烂在心里 提交于 2019-12-06 16:40:05
现象:redis运行一段时间之后就会出现假死的现象 假死指的是:进程在、pid在、telnet 端口是通的、redis-cli命令可以连接,但无法查询数据,查询的时候报错,如下图: 可以看到这个报错是有关权限的,但可以确认该redis并没有设置密码,况且已经运行了一段时间之后,突然开始不正常的 尝试解决: 观察redis的运行日志发现在重启redis的时候会有warning,如下图 因为没有报错所有先解决warning,然后经过各种尝试,得解决方案如下: 1. 修改内核参数,3种方法,任选其一: 1)编辑/etc/sysctl.conf ,改vm.overcommit_memory=1,然后sysctl -p 使配置文件生效 2)sysctl vm.overcommit_memory=1 3)echo 1 > /proc/sys/vm/overcommit_memory 2. 修改redis.conf,然后重启redis maxmemory 3G maxmemory-policy allkeys-lru maxmemory-samples 3 来源: https://my.oschina.net/jack088/blog/3138243