Redis学习笔记15:基于spring data redis及lua脚本发送到redis服务器多久过期

在Redis服务器中,通过SCRIPT LOAD命令加载的脚本会被缓存,并且会一直保存在缓存中,直到服务器重启或者使用SCRIPT FLUSH名利手动清空缓存。

一个对springboot redis框架进行重写,支持lettuce、jedis、连接池、同时连接多个集群、多个redis数据库、开发自定义属性配置的开源SDK

xml 复制代码
<dependency>
    <groupId>io.github.mingyang66</groupId>
    <artifactId>emily-spring-boot-redis</artifactId>
    <version>4.4.0</version>
</dependency>

GitHub地址:https://github.com/mingyang66/spring-parent

一、缓存的好处

缓存的好处是,当一个脚本被多次执行时,可以避免每次都重新解析和编译脚本,提高执行效率。缓存的脚本会通过SHA1散列值作为键,保存在Redis服务器的脚本缓存中。

需要注意的是,当Redis服务器重启或者使用SCRIPT FLUSH命令手动清空缓存时,所有缓存的脚本都会被清除,需要重新加载。

在脚本缓存中的脚本并不会自动过期或者自动清除,除非手动进行重启或者执行清空操作。

二、Redis脚本命令
  • 执行lua脚本
sh 复制代码
EVAL script numkeys key [key ...] arg [arg ...]
  • 执行lua脚本
sh 复制代码
	EVALSHA sha1 numkeys key [key ...] arg [arg ...]
  • 查询指定的脚本是否已经被保存在缓存当中
sh 复制代码
SCRIPT EXISTS script [script ...]

案例如下:

sh 复制代码
xx.xx.xx.xx:0>SCRIPT EXISTS "e877b0c16c7f1c6d1b4e0c7be5b13c02b98d58d4"
 1)  "0"
  • 从脚本缓存中移除所有脚本
sh 复制代码
SCRIPT FLUSH

案例如下:

sh 复制代码
xx.xx.xx.xx:0>script flush
"OK"
  • 杀死当前正在运行的lua脚本
sh 复制代码
	SCRIPT KILL

案例如下:

sh 复制代码
xx.xx.xx.xx:0>SCRIPT KILL
"NOTBUSY No scripts in execution right now."
  • 将脚本script添加到脚本缓存中,但并不立即执行这个脚本
sh 复制代码
SCRIPT LOAD script

案例如下:

sh 复制代码
xx.xx.xx.xx:0>SCRIPT LOAD "return redis.call('GET', 'mykey')"
"87f5a5b4a00f1811c3352ea840cb30dea17ac071"
相关推荐
Hello.Reader1 小时前
Redis热点数据管理全解析:从MySQL同步到高效缓存的完整解决方案
redis·mysql·缓存
C++忠实粉丝3 小时前
Redis 介绍和安装
数据库·redis·缓存
ClouGence3 小时前
Redis 到 Redis 数据迁移同步
数据库·redis·缓存
苏三说技术3 小时前
Redis 性能优化的18招
数据库·redis·性能优化
Tttian6224 小时前
基于Pycharm与数据库的新闻管理系统(2)Redis
数据库·redis·pycharm
言之。4 小时前
redis延迟队列
redis
hanbarger5 小时前
nosql,Redis,minio,elasticsearch
数据库·redis·nosql
弗罗里达老大爷6 小时前
Redis
数据库·redis·缓存
DT辰白21 小时前
基于Redis的网关鉴权方案与性能优化
数据库·redis·缓存
木子七21 小时前
Redis-十大数据类型
redis