redisUtil

@Component
public class RedisUtil {

@Autowired
private StringRedisTemplate stringRedisTemplate;

/**
 * 获取指定key的值
 *
 * @param key
 * @return
 * @author albert.ding
 */
public String get(String key) {
    return stringRedisTemplate.opsForValue().get(key);
}

/**
 * 模糊匹配获取key
 *
 * @param key
 * @return
 * @author nan_wu
 */
public Set<String> getKeys(String key) {
    return stringRedisTemplate.keys("*" + key + "*");
}

/**
 * 设置指定key的值
 *
 * @param key
 * @param value
 * @author albert.ding
 */
public void set(String key, String value) {
    stringRedisTemplate.opsForValue().set(key, value);
}

/**
 * 将值value关联到key,并将key的过期时间设为seconds(以秒为单位)
 *
 * @param key
 * @param value
 * @param timeout (seconds)
 * @author albert.ding
 */
public void setex(String key, String value, int timeout) {
    stringRedisTemplate.opsForValue().set(key, value);
    stringRedisTemplate.expire(key, timeout, TimeUnit.SECONDS);
}

/**
 * 检查给定key是否存在
 *
 * @param key
 * @return
 * @author albert.ding
 */
public boolean exists(String key) {
    return stringRedisTemplate.hasKey(key);
}

/**
 * key存在时删除key
 *
 * @param key
 * @author albert.ding
 */
public void del(String key) {
    stringRedisTemplate.delete(key);
}

/**
 * 获取存储在哈希表中指定字段的值
 *
 * @param key
 * @param field
 * @return
 * @author albert.ding
 */
public String hget(String key, String field) {
    return (String) stringRedisTemplate.opsForHash().get(key, field);
}

/**
 * 将哈希表key中的字段field的值设为value
 *
 * @param key
 * @param field
 * @param value
 * @author albert.ding
 */
public void hset(String key, String field, String value) {
    stringRedisTemplate.opsForHash().put(key, field, value);
}

/**
 * 获取在哈希表中指定key的所有字段和值
 *
 * @param key
 * @return
 * @author albert.ding
 */
public Map<String, String> hgetall(String key) {
    return stringRedisTemplate.<String, String>opsForHash().entries(key);
}

/**
 * 获取哈希表中所有值
 *
 * @param key
 * @return
 * @author albert.ding
 */
public List<String> hvals(String key) {
    return stringRedisTemplate.<String, String>opsForHash().values(key);
}

/**
 * 获取所有哈希表中的字段
 *
 * @param key
 * @return
 * @author albert.ding
 */
public Set<String> hkeys(String key) {
    return stringRedisTemplate.<String, String>opsForHash().keys(key);
}

/**
 * 获取哈希表中字段的数量
 *
 * @param key
 * @return
 * @author albert.ding
 */
public Long hlen(String key) {
    return stringRedisTemplate.opsForHash().size(key);
}

/**
 * 查看哈希表key中,指定的字段是否存在
 *
 * @param key
 * @return
 * @author albert.ding
 */
public boolean hexists(String key, String field) {
    return stringRedisTemplate.opsForHash().hasKey(key, field);
}

/**
 * 删除一个哈希表字段
 *
 * @param key
 * @author albert.ding
 */
public void hdel(String key, String field) {
    stringRedisTemplate.opsForHash().delete(key, field);
}

/**
 * 向list右边添加元素值
 *
 * @param key
 * @param val
 * @author nan_wu
 */
public void lSet(String key, String val) {
    stringRedisTemplate.opsForList().rightPush(key, val);
}

/**
 * 获取list指定区间的值
 *
 * @param key
 * @author nan_wu
 */
public List<String> lGet(String key, long start, long end) {
    return stringRedisTemplate.opsForList().range(key, start, end);
}

/**
 * 删除list中元素
 *
 * @param key
 * @param l
 * @param value
 * @author nan_wu
 */
public void lRemove(String key, long l, Object value) {
    stringRedisTemplate.opsForList().remove(key, l, value);
}

/**
 * 向set集合添加元素
 *
 * @param key
 * @param value
 * @author nan_wu
 */
public void sAdd(String key, String... value) {
    stringRedisTemplate.opsForSet().add(key, value);
}

/**
 * 根据key获取set集合
 *
 * @param key
 * @return
 * @author nan_wu
 */
public Set<String> sGet(String key) {
    return stringRedisTemplate.opsForSet().members(key);
}

/**
 * 根据key查看set集合中是否存在指定数据
 *
 * @param key
 * @param val
 * @return
 * @author nan_wu
 */
public Boolean sIsMember(String key, String val) {
    return stringRedisTemplate.opsForSet().isMember(key, val);
}

/**
 * 根据key删除set集合指定的value
 *
 * @param key
 * @param val
 * @author nan_wu
 */
public void sDel(String key, Object... val) {
    stringRedisTemplate.opsForSet().remove(key, val);
}

/**
 * 根据key获取set集合长度
 *
 * @param key
 * @author nan_wu
 */
public Long sLen(String key) {
    return stringRedisTemplate.opsForSet().size(key);
}

}

### RedisUtil 类使用教程 #### 1. RedisTemplate 初始化与配置 为了初始化 `RedisUtil` 工具类并使其可以正常工作,通常会注入一个已经配置好的 `RedisTemplate<String, Object>` 实例。这可以通过设置器方法完成: ```java private RedisTemplate<String, Object> redisTemplate; public void setRedisTemplate(RedisTemplate<String, Object> redisTemplate) { this.redisTemplate = redisTemplate; } ``` 这段代码展示了如何向工具类中注入 `RedisTemplate` 对象[^1]。 #### 2. RedisTemplate 功能概述 `RedisTemplate` 是由 Spring Data Redis 提供的一种高级别的 Redis 客户端实现方式。该模板不仅简化了对 Redis 数据库的操作流程,还提供了一系列易于使用的 API 接口来执行常见的数据存取命令。因此,在构建基于 Java 应用程序时,利用此类可以帮助快速搭建起高效稳定的缓存机制或者消息队列等功能模块[^2]。 #### 3. RedisUtil 中常用的方法定义 下面是一些可能存在于自定义 `RedisUtil` 类中的典型方法及其作用说明: - **字符串操作** - 设置键值对 ```java public boolean set(String key, String value){ try{ ValueOperations<String, String> operation = redisTemplate.opsForValue(); operation.set(key,value); return true; }catch (Exception e){ e.printStackTrace(); return false; } } ``` - 获取指定key对应的value ```java public String get(String key){ try{ ValueOperations<String, String> operation = redisTemplate.opsForValue(); return operation.get(key); } catch(Exception e){ e.printStackTrace(); return null; } } ``` - **哈希表(hash)操作** - 向hash表中插入field-value ```java public Boolean hset(final String key, final String hashKey, final String value) { HashOperations<String, String, String> operations = redisTemplate.opsForHash(); return operations.putIfAbsent(key, hashKey, value); } ``` - 删除hash表中的字段 ```java public Long hdelete(final String key, final Collection<Object> fields) { HashOperations<String, Object, Object> operations = redisTemplate.opsForHash(); return operations.delete(key,fields.toArray()); } ``` 以上只是部分示例函数列表;实际应用过程中还可以根据业务需求扩展更多实用的功能接口。 #### 4. Lua 脚本集成支持 对于某些复杂场景下的批量处理任务,则可以直接调用 Redis 内置的 Lua 解释器来进行高效的并发控制以及事务管理。例如删除匹配模式的所有 keys 可以编写如下所示 lua script 并通过 Jedis 或者 Lettuce 这样的底层驱动去执行: ```lua local redisKeys = redis.call('keys', KEYS[1] .. '*'); for i,k in pairs(redisKeys) do redis.call('del', k); end; return redisKeys; ``` 此段脚本实现了遍历符合条件的所有键名并将它们逐个移除的效果[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值