RedisService
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();
}
} }
RedisService的更多相关文章
- Redis-Service.Stack的初级使用
主要解决Redis服务器带有密码的情况下初始化. 创建RedisHelper类,直接贴代码: using ServiceStack.Redis;using System;class RedisHelp ...
- SSH框架和Redis的整合(2)
5. 添加功能的实现 新建一个Action:RClasAction,实现向Redis添加课程数据,并同步到MySQL. package com.school.action; import java.u ...
- Java Spring mvc 操作 Redis 及 Redis 集群
本文原创,转载请注明:http://www.cnblogs.com/fengzheng/p/5941953.html 关于 Redis 集群搭建可以参考我的另一篇文章 Redis集群搭建与简单使用 R ...
- Redis之AOF备份
redis在进行备份的时候有2种方式:1.RDB:2.AOF:现在主要讲哈AOF的备份 1.找到redis.config配置文件,大部分下载下来和redis-service同目录: 2.打开redie ...
- SSH框架和Redis的整合(1)
一个已有的Struts+Spring+Hibernate项目,以前使用MySQL数据库,现在想把Redis也整合进去. 1. 相关Jar文件 下载并导入以下3个Jar文件: commons-pool2 ...
- Redis之个人简单理解
1.什么是redis? 在过去的几年中,NoSQL数据库一度成为高并发.海量数据存储解决方案的代名词,与之相应的产品也呈现出雨后春笋般的生机.然而在众多产品中能够脱颖而出的却屈指可数,如Redis.M ...
- 微信JS SDK配置授权,实现分享接口
微信开放的JS-SDK面向网页开发者提供了基于微信内的网页开发工具包,最直接的好处就是我们可以使用微信分享.扫一扫.卡券.支付等微信特有的能力.7月份的时候,因为这个分享的证书获取问题深深的栽了一坑, ...
- Codeigniter的Redis使用
1. ./config/redis.php: <?php $config['redis_host'] = '127.0.0.1'; $config['redis_port'] = '6379'; ...
- NoSQL初探之人人都爱Redis:(1)Redis简介与简单安装
一.NoSQL的风生水起 1.1 后Web2.0时代的发展要求 随着互联网Web2.0网站的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类型的Web2.0纯动态网站已经 ...
随机推荐
- QF——网络之知识碎片
1.URL中文问题: URL不支持中文.若出现中文,需要对URL进行utf-8编码. NSString *urlString = [kULRSTRING stringByAddingPercentEs ...
- select * from (select P.*,ROWNUM RN FROM(select * from Mp_Relatedart where pubbaseid=785 order by ID ASC )P)M WHERE M.RN>2 and M.RN <= 7
select * from (select P.*,ROWNUM RN FROM(select * from Mp_Relatedart where pubbaseid=785 order by ID ...
- uvalive 6888 Ricochet Robots bfs
题目链接 给一个n*m的图, 图上有n个标号, n<=4, 然后有墙, 还有一个终点x. 每一步, 只能走某一个标号, 可以向四个方向走, 然后必须要碰到墙或者图的边界或者另一个标号才能停下来. ...
- windows下python2和python3共存
相信很多朋友都在网上搜索过python多版本共存的问题. 多说的说法都是修改python.exe的名字为python2.exe或者python3.exe. 但是我按照这样的方法却总是不成功. 修改py ...
- J2SE知识点摘记(十九)
Collection 1.2.1 常用方法 Collection 接口用于表示任何对象或元素组.想要尽可能以常规方式处理一组元素时,就使用这一接口.Collection 在前面的大图也 ...
- Form Presonalization 表单个性化定义控制应用
1.1.1 表单个性化定义 Oracle EBS 11.5.10所增加的Form Presonalization功能,是在对Form不进行开发的前提下,用一些系统内置的触发器,按照所设定的控制规则 ...
- dataGuard主备库角色切换
切换顺序: 先主库后备库 --查看主库可切换状态: SQL> select switchover_status from v$database; SWITCHOVER_STATUS ------ ...
- 如何显示Mac OS X上的隐藏文件和文件夹
显示隐藏文件以及文件夹命令: defaults write com.apple.finder AppleShowAllFiles YES Mac显示隐藏文件 对于OS X Mavericks 10.9 ...
- Labeling Balls(拓扑排序wa)
Labeling Balls Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12466 Accepted: 3576 D ...
- canvas学习笔记(一)-认识canvas
canvas是html5新增的一个标签,主要用于图形的绘制.我们可以把它理解为是浏览器给我们提供了一个画板,至于要绘制怎样的画卷,就看神笔马良你的主意了.而在canvas上绘制图形使用的笔,就是js了 ...