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的更多相关文章

  1. Redis-Service.Stack的初级使用

    主要解决Redis服务器带有密码的情况下初始化. 创建RedisHelper类,直接贴代码: using ServiceStack.Redis;using System;class RedisHelp ...

  2. SSH框架和Redis的整合(2)

    5. 添加功能的实现 新建一个Action:RClasAction,实现向Redis添加课程数据,并同步到MySQL. package com.school.action; import java.u ...

  3. Java Spring mvc 操作 Redis 及 Redis 集群

    本文原创,转载请注明:http://www.cnblogs.com/fengzheng/p/5941953.html 关于 Redis 集群搭建可以参考我的另一篇文章 Redis集群搭建与简单使用 R ...

  4. Redis之AOF备份

    redis在进行备份的时候有2种方式:1.RDB:2.AOF:现在主要讲哈AOF的备份 1.找到redis.config配置文件,大部分下载下来和redis-service同目录: 2.打开redie ...

  5. SSH框架和Redis的整合(1)

    一个已有的Struts+Spring+Hibernate项目,以前使用MySQL数据库,现在想把Redis也整合进去. 1. 相关Jar文件 下载并导入以下3个Jar文件: commons-pool2 ...

  6. Redis之个人简单理解

    1.什么是redis? 在过去的几年中,NoSQL数据库一度成为高并发.海量数据存储解决方案的代名词,与之相应的产品也呈现出雨后春笋般的生机.然而在众多产品中能够脱颖而出的却屈指可数,如Redis.M ...

  7. 微信JS SDK配置授权,实现分享接口

    微信开放的JS-SDK面向网页开发者提供了基于微信内的网页开发工具包,最直接的好处就是我们可以使用微信分享.扫一扫.卡券.支付等微信特有的能力.7月份的时候,因为这个分享的证书获取问题深深的栽了一坑, ...

  8. Codeigniter的Redis使用

    1. ./config/redis.php: <?php $config['redis_host'] = '127.0.0.1'; $config['redis_port'] = '6379'; ...

  9. NoSQL初探之人人都爱Redis:(1)Redis简介与简单安装

    一.NoSQL的风生水起 1.1 后Web2.0时代的发展要求 随着互联网Web2.0网站的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类型的Web2.0纯动态网站已经 ...

随机推荐

  1. google base之IncomingTaskQueue

    如同名称描述的那样,这个类就是个taskqueue,也就是任务队列,添加任务到队列,然后由MessageLoop去执行task,比较关心的函数如下: bool IncomingTaskQueue::A ...

  2. Android 数据适配器

    把复杂的数据(数组.链表.数据库.集合等)填充到指定的视图界面上.   arrayAdapter(数组适配器):      用于绑定一些格式单一的数据,数据源:数据或者集合.   private Li ...

  3. 读Flask源代码学习Python--config原理

    读Flask源代码学习Python--config原理 个人学习笔记,水平有限.如果理解错误的地方,请大家指出来,谢谢!第一次写文章,发现好累--!. 起因   莫名其妙在第一份工作中使用了从来没有接 ...

  4. Matlab插值计算各时刻磁法勘探日变观测值

    Matlab插值计算各时刻磁法勘探日变观测值 在磁法勘探中,消日变影响的改正称为日变改正.进行日变改正时必须设立日变站,观测日变情况.根据日变数据和测点观测时间,对观测数据进行改正. 在本次磁法实习中 ...

  5. Windows的历史zt

    原文地址:http://windows.microsoft.com/zh-CN/windows/history#T1=era0 1975–1981:Microsoft 起步 Microsoft 联合创 ...

  6. Asp.net MVC学习

    一.mvc项目的创建并运行 1.启动vs2010 2.新建项目 3.选择Asp.net mvc应用程序 4.不创建测试用例 5.创建之后的效果 6.运行后的mvc程序

  7. C语言入门(12)——递归

    一个函数在它的函数体内调用它自身称为递归调用.有递归调用操作的函数被称为递归函数.递归调用可以是直接调用,也可以是间接调用.也可以理解为函数的嵌套调用是函数本身. 例如实现一个求阶乘的函数: long ...

  8. background-size:的认识;

    background-size:100%;其实是元素的背景图片的宽度和元素宽度相同,高度auto: 也可理解为:background-size:100% auto; 而background:cover ...

  9. Ubuntu 14.04安装地里编码软件Nominatim过程

    一.必须软件: 在Ubuntu系统编译执行Nominatim软件系统必须安装的软件有: 1.GCC 编译器 2.postgresql 数据库 3.proj4 4.geos 5.postgis 6.PH ...

  10. 【Android进阶学习】shape和selector的结合使用

    shape和selector是Android UI设计中经常用到的,比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到shape和selector.可以这样说,shape和 ...