REDIS 键(KEY) 技术教程文章

Redis基础-Key通用指令【图】

Key的作用 通过Key查询Redis中数据 基本操作 type:获取key的类型 del:删除key exists:key是否存在拓展操作 设置key的有效期 expire:(单位:秒) pexpire:(单位:毫秒) expireat:(时间戳——秒) pexpireat:(时间戳——毫秒)ttl:获取key的有效时间 pttl:当 key 不存在时,返回 -2 。 存在时返回所剩的毫秒数。 persist:转换永久,成功返回1,不存在的key或者操作失败返回0。 查询keykeys * 查询所有的keykeys a* 查...

Redis热点key优化【代码】

热门新闻事件或商品通常会给系统带来巨大的流量,对存储这类信息的Redis来说却是一个巨大的挑战。以Redis Cluster为例,它会造成整体流量的不均知,个别节点出现OPS过大的情况,极端情况下热点key甚至会超过Redis本身能够承受的OPS, 因此寻找热点key对于开发和运维人员非常重要。下面就从四个方面来分析热点key。 1.客户端客户端其实是距离key“最近”的地方,因为Redis命令就是从客户端发出的,例如在客户端设置全局字典(key和...

redis 用scan 代替keys 解决百万数据模糊查询超时问题

转: redis 用scan 代替keys 解决百万数据模糊查询超时问题 redis 用scan 代替keys 解决百万数据模糊查询超时问题参考文章: (1)redis 用scan 代替keys 解决百万数据模糊查询超时问题 (2)https://www.cnblogs.com/zjk1/p/9619782.html 备忘一下。 转: redis 用scan 代替keys 解决百万数据模糊查询超时问题

FAQ:redis key/value 前面出现\xAC\xED\x00\x05t\x00\x05【代码】【图】

1.问题现象: 最近使用spring-data-redis 和jedis 操作redis时发现存储在redis中的key不是程序中设置的string值,前面还多出了许多类似\xac\xed\x00\x05t\x00这种字符串2.原因: spring-data-redis的RedisTemplate<K, V>模板类在操作redis时默认使用JdkSerializationRedisSerializer来进行序列化。 public void afterPropertiesSet() {super.afterPropertiesSet();boolean defaultUsed = false;if (defaultSerializer == null) {de...

Redis存取验证码设置key过期时间【代码】【图】

1.注入Redis @ResourceRedisTemplate<String, String> redisTemplate;2.存入验证码 String code = Integer.toString((int) ((Math.random() * 9 + 1) * 100000)); System.out.println(code); redisTemplate.opsForValue().set(card,code,60, TimeUnit.SECONDS); return new JsonResult<>(“获取验证码成功,一分钟内有效”); 其中opsForValue()用来存入字符串,还有Hash,List,Set存储类型 附上设置key过期时间用法 TimeUnit用法...

Redis 是一个基于内存的高性能key-value数据库

Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,不像 memcached只能保存1MB的数据,因此Redis可以用来实...

redis过期key删除不得不说的事情【代码】【图】

redis过期key删除不得不说的事情 1.过期key的删除策略 定时删除:当为key设置过期时间的时候,设置一个定时任务,到时间后即刻调用并删除定期删除:每隔一定的时间,对某些key进行扫描,并删除掉其中已经过期的key惰性删除:不进行任何操作,只有访问到当前key时,如果已经过期再去删除该key 定时删除策略对于内存来说是最友好的,过期的key立刻被删除,不会过多的占用内存,但是会消耗大部分的时间片,对cpu很不友好。 惰性删除平...

redis命令bigkey检查【代码】

./redis-cli -h ip -p port -a password --bigkeys #输出结果:临时搭建环境,没有key做检查 [root@localhost /usr/local/redis-5.0.4]# redis-cli -a redis --bigkeys Warning: Using a password with -a or -u option on the command line interface may not be safe.# Scanning the entire keyspace to find biggest keys as well as # average sizes per key type. You can use -i 0.1 to sleep 0.1 sec # per 100 SCAN comma...

Redis并发竞争key的解决方案详解【代码】【图】

1. 需求由来 1.Redis高并发的问题Redis缓存的高性能有目共睹,应用的场景也是非常广泛,但是在高并发的场景下,也会出现问题:缓存击穿、缓存雪崩、缓存和数据一致性,以及今天要谈到的缓存并发竞争。 这里的并发指的是多个redis的client同时set key引起的并发问题。 2.出现并发设置Key的原因Redis是一种单线程机制的nosql数据库,基于key-value,数据可持久化落盘。由于单线程所以Redis本身并没有锁的概念,多个客户端连接并不存在...

小白自学Redis-Redis KEY命令【代码】【图】

本文参考 嗨客网 Redis教程Redis KEY命令 Redis KEY命令教程 Redis 键相关命令用于管理 Redis 的键相关的操作。 Redis KEY命令 语法 192.168.98.70:6379> COMMAND KEY_NAME参数 参数描述COMMAND与键相关的命令。KEY_NAME需要操作的键名。 Redis KEY常用命令 命令描述DEL删除给定的 KEY。EXISTS检查给定的 KEY 是否存在。EXPIRE为给定 KEY 设置生存时间,当 KEY 过期时(生存时间为 0 ),它会被自动删除。单位为秒。PEXPIRE和 EXPIRE...

为什么我Redis中key惊现“乱码”?【代码】【图】

为什么Redis中key会惊现“乱码”? 最近在做一个秒杀项目,过程中大量应用得到了redis。 而我在用ElasticJob进行数据化初始化到Redis数据库时发现这些key都出现了一段前缀“乱码”。 数据结构为Hash,可以观察到hashkey也带有前缀“乱码” 这究竟是怎么回事呢?原来问题出在这: 我是用的是RedisTemplate,而RedisTemplate会出现编码问题,需要自行配置,如果不想配置,可以使用StringRedisTemplate,因为StringRedisTemplate的源码...

【Redis系列】Spring boot实现监听Redis key失效事件【代码】

转: 【Redis系列】Spring boot实现监听Redis key失效事件talk is cheap, show me the code.一、开启Redis key过期提醒方式二:修改配置文件 redis.conf # 默认 notify-keyspace-events "" notify-keyspace-events Ex方式二:命令行开启 CONFIG SET notify-keyspace-events Ex CONFIG GET notify-keyspace-events二、notify-keyspace-events notify-keyspace-events 选项的默认值为空 notify-keyspace-events 的参数可以是以下字符...

Redis Cluster(集群)模式下批量删除key【代码】

1 背景 SpringSecurity版本升级后,发现会有反序列化失败问题。 所以需要将Redis中存储token相关key批量删除掉: access:*auth_to_access:*auth:*refresh_auth:*refresh:*refresh_to_access:*client_id_to_access:*uname_to_access:* 2 解决 2.1 单机Redis批量删除方法 # 最简单的例子:实现批量删除auth:开头的key redis-cli KEYS "auth:*" | xargs redis-cli DEL# 携带更多参数:功能和上面一样 # -n 0:访问db0数据库 # -h 127....

Redis从入门到放弃之Redis key过期监听【代码】

1.概述 Redis是一个高效的key-value数据库,同时拥有很多较为强大的功能。针对redis的过期key,可以来实现一些业务,这些业务的共性是不需要较高的实时性。Redis的过期事件可能会存在延迟,所以它无法实现实时性较高的功能。本文主要讲述的是跟据过期事件,实现数据统计与上报的功能。 2.监听事件的两种实现 2.1 业务背景 本文中所讲述的场景主要是:一个服务下面有多台应用设备,设备会定时上报一些数据,此服务需要跟据上报数据定...

Redis键空间通知(Keyspace Notification)【代码】

从Redis 2.8.0开始,Redis加入了发布/订阅模式以及键空间消息提醒(keyspace notification)功能。键空间消息提醒提供了允许客户端通过订阅指定信道获取Redis数据变化的能力。 需要注意的是,键空间消息提醒并非可靠的,它不会对订阅端是否接收到消息进行确认。例如某个订阅的客户端暂时断开连接,在其直到恢复连接期间发生的事件将无法再次获得。 配置 在默认情况下,Redis并未开启键空间消息提醒功能。为了打开该功能,需要通过n...

day5 redis 键(key)【代码】

redis 键(key) 语法 redis 键命令 的基本语法:COMMAND KEY_NAME实例 SET name "zs" DEL nameredis keys 命令 命令描述DEL key该命令用于在key存在时删除keyDUMP key序列化给定key,并返回被序列化的值EXISTS key检查给定的key是否存在EXPIRE key seconds为给定key设置过期时间,以秒计EXPIREAT key timestampEXPIREAT 的作用和 EXPIRE类似,都是为key设置过期时间。不同在与 EXPIREAT 命令接受的时间参数是 UNIX 时间戳PEXPIRE ...

Redis数据结构之键命令【图】

Redis数据结构之键命令 【键命令不同数据结构类型通用】查找键,参数?持正则表达式keys pattern例2:查看名称中包含a的键keys a*判断键是否存在,如果存在返回1,不存在返回0exists key1例3:判断键a1是否存在exists a1查看键对应的value的类型type key例4:查看键a1的值类型,为redis?持的五种类型中的?种type a1删除键及对应的值del key1 key2 ...例5:删除键a2、a3del a2 a3设置过期时间,以秒为单位 如果没有指定过期时间则?直...

Redis监听key过期【代码】

通过开启key过期的事件通知,当key过期时,会发布过期事件;我们定义key过期事件的监听器,当key过期时,就能收到回调通知。 使用场景:1)实现延时队列将需要延迟的时间设置为key的TTL,当key过期时,在监听器收到通知,达到延迟的效果。 步骤:  1、修改 redis.conf / redis.window.conf 开启 notify-keyspace-events Ex 2、RedisConfig 中配置 Message Listener Containers (消息订阅者容器)类似于Redis pub/sub 中 Me...

redis批量获取多个string key的set命令【代码】

目录场景操作 场景 记录下开发中测试数据遇到的问题,开发环境想全量跑下数据验证数据的正确性,但每个账户的token存贮在redis中string类型,格式如:set TOKEN_{account_id},一个个获取要崩溃啊。我想获取到所有的账户,设置到开发环境中比较费事。 操作先获取线上的token# 获取到所有的token keys scan 0 match TOKEN_* 1000# 根据keys获取所有的值 mget TOKEN_1 TOKEN_2 ...得到所有的set命令 新建t.php文件 <?php$keys = ["TO...

redis 命令行密码登录, jedis 基本操作, INCRBY key increment,报错WRONGTYPE Operation【代码】

redis 命令行密码登录redis-cli -h [ip] -p [port]auth [password]jedis 常用操作 [来源]System.out.println("判断某个键是否存在:"+jedis.exists("username"));System.out.println("新增<'username','wukong'>的键值对:"+jedis.set("username", "wukong"));System.out.println("设置键username的过期时间为5s:"+jedis.expire("username", 5));System.out.println("移除键username的生存时间:"+jedis.persist("username"));Syst...