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纯动态网站已经 ...
随机推荐
- shared_ptr智能指针源码剖析
(shared_ptr)的引用计数本身是安全且无锁的,但对象的读写则不是,因为 shared_ptr 有两个数据成员,读写操作不能原子化.根据文档 (http://www.boost.org/doc/ ...
- nginx的配置说明
#定义Nginx运行的用户和用户组user www www; #nginx进程数,建议设置为等于CPU总核心数.worker_processes 8; #全局错误日志定义类型,[ debug | in ...
- Yaf-Plus 我们只谈框架这件事
预热下,也算对自己的督促. Comming soon!
- 关于scala环境配置详解
首先从官网下载适合自身电脑配置的scala安装包.scala下载官网网址:http://www.scala-lang.org/download/ 同时scala还有自己集成好的IDE,例如eclips ...
- MVC4,MVC3,VS2012+ entity framework Migration from Sqlserver to Mysql
在开发的初期个人认为因VS与Sqlserver的配合很默契,即可以方便的实现Code First,又可以使用SqlServer Manager很漂亮的进行建模与变更,也许是个人的使用习惯MS的界面做的 ...
- codeforces #286 Div.2 C DP总是以意外的方式打败我
题目大意:30001个岛排成一排,编号从0到30000,一共有n个宝物分散在这些岛上,一只猪最开始从0跳到d,之后每一步跳的步长和上一步相差不超过1,第二步步长就是d-1,d,d+1,第二步的位置就是 ...
- spring mvc 建立下拉框并进行验证demo
原文出处:http://howtodoinjava.com/spring/spring-mvc/spring-mvc-populate-and-validate-dropdown-example/ 该 ...
- 去英国Savile Row 做件私人定制手工西装_GQ男士网
去英国Savile Row 做件私人定制手工西装_GQ男士网 去英国Savile Row 做件私人定制手工西装
- mysql长连接和短连接的问题
什么是长连接? 其实长连接是相对于通常的短连接而说的,也就是长时间保持客户端与服务端的连接状态. 通常的短连接操作步骤是: 连接->数据传输->关闭连接: 而长连接通常就是: 连接-> ...
- Error pulling origin: error: The following untracked working tree files would be overwritten by...
git在pull时,出现这样的错误的时候,可能非常多人进进行stash.相关stash的请看:Error pulling origin: error: Your local changes to th ...