当前位置:实例文章 » JAVA Web实例» [文章]Redis工具类

Redis工具类

发布人:shili8 发布时间:2025-01-02 07:15 阅读次数:0

**Redis工具类**
================本文将介绍一个完整的Redis工具类,涵盖了常见的Redis操作,如连接、断开、设置值、获取值、删除值等。同时,还提供了一些高级功能,如事务处理、管道传输和Lua脚本执行。

**工具类概述**
---------------该工具类名为`RedisUtil.java`,它使用了Spring Boot的RedisTemplate来进行操作。工具类中包含以下方法:

* `connect()`:连接到Redis服务器* `disconnect()`:断开与Redis服务器的连接* `set(String key, String value)`:设置指定键值对* `get(String key)`:获取指定键的值* `delete(String... keys)`:删除指定键或多个键* `executeTransaction(RedisCallback callback)`:执行事务操作* `pipeline()`:开启管道传输* `eval(String script, String... args)`:执行Lua脚本**工具类代码**
-----------------

javaimport org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * Redis工具类 */
@Componentpublic class RedisUtil {

 private static final String REDIS_TEMPLATE_BEAN_NAME = "redisTemplate";

 @Autowired private RedisTemplate redisTemplate;

 /**
 * 连接到Redis服务器 *
 * @return true表示连接成功,false表示连接失败 */
 public boolean connect() {
 return redisTemplate != null;
 }

 /**
 * 断开与Redis服务器的连接 */
 public void disconnect() {
 // RedisTemplate会自动断开连接,不需要手动断开 }

 /**
 * 设置指定键值对 *
 * @param key 键 * @param value 值 */
 public void set(String key, String value) {
 redisTemplate.opsForValue().set(key, value);
 }

 /**
 * 获取指定键的值 *
 * @param key 键 * @return 指定键对应的值,null表示不存在 */
 public String get(String key) {
 return (String) redisTemplate.opsForValue().get(key);
 }

 /**
 * 删除指定键或多个键 *
 * @param keys 键列表 */
 public void delete(String... keys) {
 for (String key : keys) {
 redisTemplate.delete(key);
 }
 }

 /**
 * 执行事务操作 *
 * @param callback 事务回调函数 * @return 回调函数的返回值 */
 public Object executeTransaction(RedisCallback callback) {
 return redisTemplate.execute(callback);
 }

 /**
 * 开启管道传输 *
 * @return RedisPipedExecution对象 */
 public RedisPipedExecution pipeline() {
 return redisTemplate.pipelined();
 }

 /**
 * 执行Lua脚本 *
 * @param script 脚本内容 * @param args 参数列表 * @return 脚本执行结果 */
 public Object eval(String script, String... args) {
 return redisTemplate.execute((RedisCallback) connection -> {
 Script scriptObject = connection.getNativeConnection().getScriptingSupport().compile(script);
 return scriptObject.execute(connection.getNativeConnection(), args);
 });
 }
}


**使用示例**
-------------

java@RestControllerpublic class RedisController {

 @Autowired private RedisUtil redisUtil;

 @GetMapping("/set")
 public String set() {
 redisUtil.set("key", "value");
 return "设置成功";
 }

 @GetMapping("/get")
 public String get() {
 String value = redisUtil.get("key");
 return value != null ? value : "不存在";
 }

 @GetMapping("/delete")
 public String delete() {
 redisUtil.delete("key");
 return "删除成功";
 }

 @GetMapping("/transaction")
 public String transaction() {
 RedisCallback callback = connection -> {
 connection.set("key1", "value1");
 connection.set("key2", "value2");
 return null;
 };
 redisUtil.executeTransaction(callback);
 return "事务执行成功";
 }

 @GetMapping("/pipeline")
 public String pipeline() {
 RedisPipedExecution execution = redisUtil.pipeline();
 execution.set("key1", "value1");
 execution.set("key2", "value2");
 execution.sync();
 return "管道传输成功";
 }

 @GetMapping("/eval")
 public String eval() {
 String script = "return {KEYS[1], KEYS[2]};";
 Object result = redisUtil.eval(script, "key1", "key2");
 return result != null ? result.toString() : "不存在";
 }
}


**注意事项**
-------------

* RedisTemplate会自动断开连接,不需要手动断开。
* 使用RedisTemplate时,需要注入一个RedisTemplate实例。
* executeTransaction方法执行事务操作,回调函数的返回值将作为结果返回。
* pipeline方法开启管道传输,sync方法用于同步执行。
* eval方法执行Lua脚本,参数列表将作为脚本的参数。

相关标签:junitjava开发语言
其他信息

其他资源

Top