package com.sprucetec.bone.common.redis;
import com.alibaba.fastjson.JSON;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import redis.clients.jedis.Jedis;
import redis.clients.util.Pool;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Service
public class RedisService {
@Autowired
private Pool<Jedis> pool;
public Pool<Jedis> getPool() {
return pool;
}
/**
* 判断指定key是否存在
*
* @param key key
* @return 如果存在,返回true,否则返回false
*/
public boolean exists(final String key) {
Jedis jedis = null;
try {
jedis = pool.getResource();
return jedis.exists(key);
} finally {
if (jedis != null) {
jedis.close();
}
}
}
//删除指定的Keys
public long delete(final String... keys) {
Jedis jedis = null;
try {
jedis = pool.getResource();
return jedis.del(keys);
} finally {
if (jedis != null) {
jedis.close();
}
}
}
// 重命名指定的Key,如果参数中的两个Keys的命令相同,
// 或者是源Key不存在,该命令都会返回相关的错误信息。如果newKey已经存在,则直接覆盖。
public String rename(final String oldkey, final String newkey) {
Jedis jedis = null;
try {
jedis = pool.getResource();
return jedis.rename(oldkey, newkey);
} finally {
if (jedis != null) {
jedis.close();
}
}
}
// 设置某个key的过期时间(单位:秒),在超过该时间后,Key被自动的删除。
// 如果该Key在超时之前被修改,与该键关联的超时将被移除。
public long expire(final String key, final int seconds) {
Jedis jedis = null;
try {
jedis = pool.getResource();
return jedis.expire(key, seconds);
} finally {
if (jedis != null) {
jedis.close();
}
}
}
// #将指定Key的Value原子性的递增1。如果该Key不存在,其初始值为0,在incr之后其值为1,返回递增后的值。
public long incrBy(final String key, final long integer) {
Jedis jedis = null;
try {
jedis = pool.getResource();
return jedis.incrBy(key, integer);
} finally {
if (jedis != null) {
jedis.close();
}
}
}
public long incr(final String key) {
Jedis jedis = null;
try {
jedis = pool.getResource();
return jedis.incr(key);
} finally {
if (jedis != null) {
jedis.close();
}
}
}
// #将指定Key的Value原子性的递减1。如果该Key不存在,其初始值为-1,在incr之后其值为1,返回递减后的值。
public long decrBy(final String key, final long integer) {
Jedis jedis = null;
try {
jedis = pool.getResource();
return jedis.decrBy(key, integer);
} finally {
if (jedis != null) {
jedis.close();
}
}
}
public long decr(final String key) {
Jedis jedis = null;
try {
jedis = pool.getResource();
return jedis.decr(key);
} finally {
if (jedis != null) {
jedis.close();
}
}
}
@SuppressWarnings("unchecked")
public <T> T getJSONToObject(Class<?> clazz, String key) {
Jedis jedis = null;
try {
jedis = pool.getResource();
String value = jedis.get(key);
return (T) JSON.toJavaObject((JSON) JSON.parse(value), clazz);
} finally {
if (jedis != null) {
jedis.close();
}
}
}
public String getString(String key) {
Jedis jedis = null;
try {
jedis = pool.getResource();
return jedis.get(key);
} finally {
if (jedis != null) {
jedis.close();
}
}
}
@SuppressWarnings("unchecked")
public <T> List<T> mget(Class<?> clazz, final String... keys) {
List<T> list = new ArrayList<T>();
Jedis jedis = null;
try {
jedis = pool.getResource();
List<String> values = jedis.mget(keys);
for (String value : values) {
list.add((T) JSON.toJavaObject((JSON) JSON.parse(value), clazz));
}
return list;
} finally {
if (jedis != null) {
jedis.close();
}
}
}
public <T> String setObjectToJSON(String key, T value) {
Jedis jedis = null;
try {
jedis = pool.getResource();
String str = JSON.toJSONString(value);
return jedis.set(key, str);
} finally {
if (jedis != null) {
jedis.close();
}
}
}
public String set(String key, String value) {
Jedis jedis = null;
try {
jedis = pool.getResource();
return jedis.set(key, value);
} finally {
if (jedis != null) {
jedis.close();
}
}
}
public <T> String setex(final String key, final int seconds, final T value) {
Jedis jedis = null;
try {
jedis = pool.getResource();
String str = JSON.toJSONString(value);
return jedis.setex(key, seconds, str);
} finally {
if (jedis != null) {
jedis.close();
}
}
}
public <T> String mset(final Map<String, T> map) {
Jedis jedis = null;
try {
jedis = pool.getResource();
String[] keyValues = new String[map.size() * 2];
int i = 0;
for (String key : map.keySet()) {
keyValues[2 * i] = key;
keyValues[2 * i + 1] = JSON.toJSONString(map.get(key));
i++;
}
return jedis.mset(keyValues);
} finally {
if (jedis != null) {
jedis.close();
}
}
}
// #该命令原子性的完成参数中所有key/value的设置操作,
// 如果在这一批Keys中有任意一个Key已经存在了,那么该操作将全部回滚,
// 即所有的修改都不会生效。
public <T> Long msetnx(final Map<String, T> map) {
Jedis jedis = null;
try {
jedis = pool.getResource();
String[] keyValues = new String[map.size() * 2];
int i = 0;
for (String key : map.keySet()) {
keyValues[2 * i] = key;
keyValues[2 * i + 1] = JSON.toJSONString(map.get(key));
i++;
}
return jedis.msetnx(keyValues);
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/**
* 插入Map类型的某key对应的值
*/
public int hset(String key, String field, String value) {
Jedis jedis = null;
try {
jedis = pool.getResource();
return jedis.hset(key, field, value).intValue();
} finally {
if (jedis != null)
jedis.close();
}
}
/**
* 查询Map类型的某key对应的值
*/
public String hget(String key, String field) {
Jedis jedis = null;
try {
jedis = pool.getResource();
return jedis.hget(key, field);
} finally {
if (jedis != null)
jedis.close();
}
}
/**
* 查询Map类型的值
*/
public Map<String, String> hgetAll(String key) {
Jedis jedis = null;
try {
jedis = pool.getResource();
return jedis.hgetAll(key);
} finally {
if (jedis != null)
jedis.close();
}
}
/**
* 删除hash中的一条记录
*/
public long hdel(String hashKey, String taskId) {
Jedis jedis = null;
try {
jedis = pool.getResource();
return jedis.hdel(hashKey, taskId);
} finally {
if (jedis != null)
jedis.close();
}
}
}
相关推荐
基于STM32的智能停车场管理系统
随着城市车辆数量激增,传统停车场管理效率低下。本文设计了一款基于STM32的智能停车场管理系统,支持车牌识别、车位引导、自动计费等功能,可显著提升停车场运营效率。系统适用于商场、小区等场景,支持多终端协同管理。本系统实现了停车场智能化管理,显著提升了运营效率。:STM32F746(高性能Cortex-M7)问题讨论,stm32的资料领取可以私信!:OV7725摄像头(30fps):ESP32(Wi-Fi+蓝牙)红外对射传感器(车辆进出检测)支持蓝牌、黄牌、新能源车牌。⬇帮大家整理了单片机的资料。
RedisService常用方法封装
package com.my.config.redis; import com.alibaba.fastjson.JSON; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype
用树莓派搭建全功能NAS服务器(01):树莓派基础操作&OMV搭建
写在前面 对于文件互传来说,局域网和云盘的操作总是独立的,而且很难将两者的优势合为一体。如果想要集多种优势为一体,那么NAS应该就是较为完美的解决方案了。 在这个系列中我们尽量跳过一些枯燥的理论知识,专注于说明两件事: 1.NAS是什么&能做什么 2.搭建思路&怎么做 这中间也会涉及到一些方案的选择,同类方案我也会列出来和大家分享我已知的优缺点,有兴趣可以多种尝试。(侧重于软件) 虽然是用树莓派搭建的,但是对于debian linux系统下的NAS搭建有着很好的参
redis的redis.service配置
如果Redis服务正在运行,将显示服务的状态。现在可以使用Redis客户端连接到Redis服务器,并开始使用它了。以上是CentOS中配置Redis服务的基本步骤,根据实际需要可以进行更改和配置。这将创建一个名为redis的系统用户,并禁止该用户登录系统。这将启用Redis服务,并将其设置为在系统启动时自动启动。这将打开Redis配置文件。这将安装最新版本的Redis。这将启动Redis服务。
OpenBCI脑电帽硬件DIY与低成本搭建实战
本文详细介绍了如何通过第三方兼容硬件和开源设计,低成本DIY一套功能完备的OpenBCI脑电采集系统。从硬件选购、组装、软件配置到信号调试,提供了完整的实战指南,将总成本控制在千元级别,使脑机接口技术对爱好者、学生和研究者变得更加触手可及。
UG/NX二次开发Siemens官方NXOPEN实例解析—1.3 BlockStyler/ExtrudewithPreview
随着工业智能化的不断发展,UG二次开发的需求越来越多,也吸引了大批的二开从业人员,本人作为一名资深IT从业者(10年+)也毅然加入二次开发大军。然而,和流行IT行业(互联网、金融、医疗等)相比,工业智能化的门槛显得更高一点,专业的工业软件,相对封闭的开发理念和更小的开发圈子,让刚进入二开的从业者有点举步维艰。边学边整理,希望通过这系列文章的整理能给二开的生态增添一叶绿。
【Redis实现系列】RedisServer实现
RedisServer 请求处理 (文件事件) 命令请求执行过程:即 processFileEvents 里读事件处理器的主要操作 发送命令请求 Redis服务器的命令请求来自Redis客户端,当用户在客户端中键入一个命令请求时,客户端会将这个命令请求转换成协议格式,然后通过连接到服务器的套接字,将协议格式的命令请求发送给服务器。 示例(步骤一): SET KEY VALUE # 那么客户端会将这个命令转换成协议: *3\r\n$3\r\nSET\r\n$3\r\nKEY\r\n$5\r\nVALU
国密GmSSL v2版本命令行方式生成国密sm2私钥、公钥、签名和验证签名
GmSSL是国密算法的工具库(主要包含SM2、SM3、SM4和国密SSL证书生成等功能),项目本身是OpenSSL的分支,但是截至文章发布为止,OpenSSL主分支的国密算法并不完善,目前并不支持签名和解签,所以国密算法这块还是需要使用GmSSL工具库。网上现在并没有v2版本的GmSSL可用的命令行文章,本章用于记录这些命令。本文原创自csdn博客,其他网站看到这篇文章都是盗,版,爬。虫。网站,支持原创,远离盗版。
springBoot中redisService封装
service层: public interface RedisService { //把字符串类型的value写入缓存 public boolean setString(String key,String value); //把字符串类型的value写入缓存(有失效时间) public boolean setString(String key ,String va...
华为OD机试真题2025双机位C卷 Python&JS 实现【卡牌游戏】
小明正在尝试一种新的牌游戏。游戏规则只如下:首先,小明拿到一张写有数字m的牌。 然后,他会拿到另外n张牌,上面分别写有不同的数字,牌排成一排。小明的目标是从这排牌中找到一串连续的牌,这些牌上数字的总和可以被 m整除。你的任务是判断小明是否可以完成这个目标。
Python爬虫实战:基于Playwright与异步技术的专利数据抓取系统
专利数据是企业技术创新、市场竞争分析和行业趋势预测的关键情报来源。然而,专利数据通常分散在各个国家的专利局网站,数据结构复杂,反爬机制严格,使得高效抓取成为技术挑战。本文将详细介绍如何构建一个基于最新Python技术的专利数据抓取系统,涵盖Selenium的现代化替代方案Playwright、异步编程、智能代理轮换等高级技术。
redisService 分布锁
package com.sohu.redis; import java.util.Random; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import org.apache.log4j.Logger; import redis.clients.jed...
Codex 100个真实案例 - 用AI画业务流程图Mermaid(产品经理都馋哭了)
还在用 Visio、ProcessOn 拖拖拽拽画流程图?改一个箭头方向就要调半天?本案例教你用 Codex 自然语言描述业务流程,AI 自动转为 Mermaid 代码,一秒生成专业流程图、时序图、甘特图、饼图!还能搭建在线渲染工具、批量导出 PNG/SVG、集成到文档系统。产品经理、架构师、项目经理都能用,从此画图再也不是体力活!
RedisService操作redis
直接上代码: import java.util.concurrent.TimeUnit; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework....
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
数学建模模型总结
这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!
RedisService 简单封装
@Servicepublic interface RedisService { /** * 保存 * * @param key * 键 * @param value * zhi */ public void set(String key, String value); /** ...
android 蓝牙通讯demo
android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。
记一次 redisservice.exe客户端启动闪退问题
记一次 redisservice.exe客户端启动闪退问题: 尝试过网上搜的所有办法都不行。 重启之后,问题解决。当时因为电脑开的窗口比较多,不舍得重启,所以耽误了半天时间,如果以后遇到明明没有启动redis但是redisservice却闪退的话,不妨重启下试试。因为网上说的大多解决办法都需要redis服务正常启动才能执行那些命令。 对于redisservice启动闪退的原因,目前为止还没有发现,这么长的时间,就遇到过那一次启动问题,如果下次遇到再总结下两次问题的共同点。 问题解决很简单,但有时就是差这么一
OV9734 DATASHEET,完整规格书
OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等
redisservice jsonobect 转list
redis里存的是json,但是json的格式是list。
Spring Boot集成redis,实现redisService ,动态设置数据缓存时间
1、导入maven依赖 <!-- springboot整合 redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> <...
最新免费Windows、RedisService、RedisClient连接工具
免费至上
Midway 集成 Redis 完全指南:安装、配置与源码级原理
本文以 Midway 官方扩展文档为核心,讲解如何在前端/全栈 Node.js 框架 Midway 中快速接入 Redis:从依赖安装、组件引入、单机 / Sentinel / Cluster / 多客户端四种配置模式,到 `RedisService` 与 `RedisServiceFactory` 的注入使用,并结合 `packages/redis` 包源码与测试用例,揭示组件底层的工作机制。读
redis源码分析七--从redisservice启动分析redis的事件机制
1、redis事件介绍 Redis服务器是一个事件驱动程序,服务器需要处理以下两类事件 文件事件:Redis服务器通过套接字与客户端(或者其他Redis服务器进行连接),而文件事件就是服务器对套接字操作的抽象。服务器与客户端的通信会产生相应的文件事件,而服务器则通过监听并处理这些事件来完成一系列网络通信操作。 时间事件:Redis服务器中的一些操作(比如serverCron函数)需要在给定的时...
java用set报空指针_redisService.set方法报空指针
package com.game.brag.server;import java.util.HashSet;import java.util.Set;import org.nutz.dao.Dao;import org.nutz.integration.jedis.RedisService;import org.nutz.ioc.loader.annotation.Inject;import or...
Redis(一):如何安装Redis
若有什么问题或不解,或有什么想学的知识点,欢迎提出!点点关注,让作者有更多的动力发布更多的文章。
springboot整合redis
redis安装与启动 Redis是用C语言开发的一个高性能键值对数据库,可用于数据缓存,主要用于处理大量数据的高访问负载。 下载Redis,下载地址:https://github.com/MicrosoftArchive/redis/releases 添加项目依赖 在pom.xml中新增Redis相关依赖 <!--redis依赖配置--> <dependency> <groupId>org.springframework.boot</group
Redis for Windows 实战指南:redis-windows 项目的一键启动、命令行与服务化运行全解析
**导读**:本文以 [redis-windows](https://link.gitcode.com/i/70fcc05caac8203c095d75cd743bb273) 仓库的 README 为主线,系统讲解如何在 Windows 平台上运行 Redis:既有一键脚本、命令行与系统服务三种运行模式的完整操作步骤,也有 Windows 服务宿主源码、启动脚本与 GitHub Actions 自
springboot + redis实现缓存功能
安装好redis, 添加项目依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version&...
879



被折叠的 条评论
为什么被折叠?



