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纯动态网站已经 ...
随机推荐
- struts2日常
更新struuts2 的action后不能马上反应,要重启服务器才可以,加上 <constant name="struts.devMode" value="true ...
- 解决ie6支持最大高度最小高度的方法
1.IE6支持max-height解决方法 IE6支持最大高度解决CSS代码:.yangshi{max-height:1000px;_height:expression((document.docum ...
- codeforces #286 Div.2 C DP总是以意外的方式打败我
题目大意:30001个岛排成一排,编号从0到30000,一共有n个宝物分散在这些岛上,一只猪最开始从0跳到d,之后每一步跳的步长和上一步相差不超过1,第二步步长就是d-1,d,d+1,第二步的位置就是 ...
- c reference
1,函数:strdup复制字符串函数原型定义:char * strdup(const char *s);函数说明:strdup()会先用maolloc()配置与参数s字符串相同的空间大小,然后将参数s ...
- 去英国Savile Row 做件私人定制手工西装_GQ男士网
去英国Savile Row 做件私人定制手工西装_GQ男士网 去英国Savile Row 做件私人定制手工西装
- findOneAndUpdate的用法详解
Fragment.findOneAndUpdate({_id:id}, {$set: datas}, {upsert:true, 'new':true}).populate('ads').exec(f ...
- 【HTML5】DOMContentLoaded事件
这个事件是从HTML中的onLoad的延伸而来的,当一个页面完成加载时,初始化脚本的方法是使用load事件,但这个类函数的缺点是仅在所有资源都完全加载后才被触发,这有时会导致比较严重的延迟,开发人员随 ...
- select option 下拉多选单选bootstrap插件使用总结2
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 编程之美之数独求解器的C++实现方法
编程之美的第一章的第15节.讲的是构造数独.一開始拿到这个问题的确没有思路, 只是看了书中的介绍之后, 发现原来这个的求解思路和N皇后问题是一致的. 可是不知道为啥,反正一開始确实没有想到这个回溯法. ...
- 662 - Fast Food
描述:状态方程p[i][j]=dp[i-1][k]+dist(k+1,j),由于没搞懂距离dist是怎么计算的,以为是num[j]-num[k+1],结果wa了一次,在状态转移的时候,采用一个数组sc ...