`
lxlcx201
  • 浏览: 7113 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

redis常用方法封装

阅读更多
216396734 交流群
JedisUtils.java
package com.youquhd.common.redis;


import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import com.youquhd.common.utils.StringUtils;
import com.youquhd.modules.sys.entity.User;


import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.exceptions.JedisException;


/**
 * Jedis常用功能
 * @author liucx
 * @email  lxlcx201@163.com
 */


public class JedisUtils {

public static final String PK="pk_";

private static Logger logger = LoggerFactory.getLogger(JedisUtils.class);

private static JedisPool jedisPool =new JedisPool("192.168.3.250");//SpringContextHolder.getBean(JedisPool.class);

/**
* 设置分布式事物锁
* 1、返回0表示锁已经存在,返回1表示获得锁成功
* @param key 
* @param cacheSeconds
* @return 
*/
public static long setNx(String key, int cacheSeconds) {
long value = 0L;
Jedis jedis = null;
try {
jedis = getResource();
value = jedis.setnx(key, "1");
if(cacheSeconds>0) {
jedis.expire(key, cacheSeconds);   //避免死锁
}
} catch (Exception e) {
logger.debug("setNx {} = {}", key, cacheSeconds, e);
} finally {
returnResource(jedis);
}
return value;
}
/**
* 获取自增id 
* 该方法单机每秒并发在1100左右
* @param key 键
* @return 值
*/
public static long incrementAndGet(String key) {
long value = 0L;
Jedis jedis = null;
try {
jedis = getResource();
value=jedis.incr("increment_"+key);
} catch (Exception e) {
logger.debug("incrementAndGet {} = {}", key, value, e);
} finally {
returnResource(jedis);
}
return value;
}
/**
* 根据key获取缓存
* @param key 键
* @return 值
*/
public static String get(String key) {
String value = null;
Jedis jedis = null;
try {
jedis = getResource();
if (jedis.exists(key)) {
value = jedis.get(key);
value = StringUtils.isNotBlank(value) && !"nil".equalsIgnoreCase(value) ? value : null;
logger.debug("get {} = {}", key, value);
}
} catch (Exception e) {
logger.warn("get {} = {}", key, value, e);
} finally {
returnResource(jedis);
}
return value;
}


/**
* 设置缓存
* @param key 键
* @param value 值
* @param cacheSeconds 超时时间,0为不超时
* @return
*/
public static String set(String key, String value, int cacheSeconds) {
String result = null;
Jedis jedis = null;
try {
jedis = getResource();
result = jedis.set(key, value);
if (cacheSeconds != 0) {
jedis.expire(key, cacheSeconds);
}
logger.debug("set {} = {}", key, value);
} catch (Exception e) {
logger.warn("set {} = {}", key, value, e);
} finally {
returnResource(jedis);
}
return result;
}

/**
* 更新缓存时间
* @param key   key值
* @param sessionSeconds  更新多长时间
*/
public static void expire(String key,int sessionSeconds){
Jedis jedis = null;
try {
jedis = getResource();
if (sessionSeconds != 0) {
jedis.expire(key, sessionSeconds);
}
} catch (Exception e) {
logger.warn("set {} = {}", key, sessionSeconds, e);
} finally {
returnResource(jedis);
}
}

/**
* 设置缓存
* @param key 键
* @param value 值
* @param cacheSeconds 超时时间,0为不超时
* @return
*/
public static String setObject(String key, Object value, int cacheSeconds) {
String result = null;
Jedis jedis = null;
try {
jedis = getResource();
result = jedis.set(getBytesKey(key), toBytes(value));
if (cacheSeconds != 0) {
jedis.expire(key, cacheSeconds);
}
logger.debug("setObject {} = {}", key, value);
} catch (Exception e) {
logger.warn("setObject {} = {}", key, value, e);
} finally {
returnResource(jedis);
}
return result;
}
/**
* 获取缓存
* @param key 键
* @return 值
*/
public static Object getObject(String key) {
Object value = null;
Jedis jedis = null;
try {
jedis = getResource();
if (jedis.exists(getBytesKey(key))) {
value = toObject(jedis.get(getBytesKey(key)));
logger.debug("getObject {} = {}", key, value);
}
} catch (Exception e) {
logger.warn("getObject {} = {}", key, value, e);
} finally {
returnResource(jedis);
}
return value;
}
/**
* 设置List缓存,如果该key值原来就 存在,覆盖原来的
* @param key 键
* @param value 值
* @param cacheSeconds 超时时间,0为不超时
* @return
*/
public static long setList(String key, List<String> value, int cacheSeconds) {
long result = 0;
Jedis jedis = null;
try {
jedis = getResource();
if (jedis.exists(key)) {
jedis.del(key);
}
result = jedis.rpush(key, (String[])value.toArray());
if (cacheSeconds != 0) {
jedis.expire(key, cacheSeconds);
}
logger.debug("setList {} = {}", key, value);
} catch (Exception e) {
logger.warn("setList {} = {}", key, value, e);
} finally {
returnResource(jedis);
}
return result;
}
/**
* 获取List<String>缓存
* @param key 键
* @return 值
*/
public static List<String> getList(String key) {
List<String> value = null;
Jedis jedis = null;
try {
jedis = getResource();
if (jedis.exists(key)) {
value = jedis.lrange(key, 0, -1);
logger.debug("getList {} = {}", key, value);
}
} catch (Exception e) {
logger.warn("getList {} = {}", key, value, e);
} finally {
returnResource(jedis);
}
return value;
}
/**
* 向List缓存中添加值,在list后面追加
* @param key 键
* @param value 值
* @return
*/
public static long listAdd(String key, String... value) {
long result = 0;
Jedis jedis = null;
try {
jedis = getResource();
result = jedis.rpush(key, value);
logger.debug("listAdd {} = {}", key, value);
} catch (Exception e) {
logger.warn("listAdd {} = {}", key, value, e);
} finally {
returnResource(jedis);
}
return result;
}
/**
* 设置List缓存,如果该key值已经存在,覆盖原来的值
* @param key 键
* @param value 值
* @param cacheSeconds 超时时间,0为不超时
* @return
*/
public static long setObjectList(String key, List<?> value, int cacheSeconds) {
long result = 0;
Jedis jedis = null;
try {
jedis = getResource();
if (jedis.exists(ObjectUtils.serialize(key))) {
jedis.del(ObjectUtils.serialize(key));
}
for(int i=0;i<value.size();i++){
jedis.rpush(ObjectUtils.serialize(key), ObjectUtils.serialize(value.get(i)));
}
if (cacheSeconds != 0) {
jedis.expire(key, cacheSeconds);
}
logger.debug("setObjectList {} = {}", key, value);
} catch (Exception e) {
logger.warn("setObjectList {} = {}", key, value, e);
} finally {
returnResource(jedis);
}
return result;
}


/**
* 向List缓存中添加值,在原来list的后面增加
* @param key 键
* @param value 值
* @return
*/
public static long listObjectAdd(String key, Object... value) {
long result = 0;
Jedis jedis = null;
try {
jedis = getResource();
for (Object o : value){
jedis.rpush(ObjectUtils.serialize(key), ObjectUtils.serialize(o));
}
logger.debug("listObjectAdd {} = {}", key, value);
} catch (Exception e) {
logger.warn("listObjectAdd {} = {}", key, value, e);
} finally {
returnResource(jedis);
}
return result;
}
/**
* 获取List缓存 start传0 end传-1查询全部
* @param key 
* @param start 列表开始值 从0开始计数 ,(可以是负数,当为负数的时候值列表结尾的偏移量,如-2知道从倒数第二条开始)
* @param end   取列表结尾的数
* @return
*/
public static List<?> getObjectList(String key,int start,int end) {
List<Object> value = null;
Jedis jedis = null;
try {
jedis = getResource();
if (jedis.exists(ObjectUtils.serialize(key))) {
List<byte[]> list = jedis.lrange(ObjectUtils.serialize(key), start, end);
value = Lists.newArrayList();
for (byte[] bs : list){
value.add(toObject(bs));
}
logger.debug("getObjectList {} = {}", key, value);
}
} catch (Exception e) {
logger.warn("getObjectList {} = {}", key, value, e);
} finally {
returnResource(jedis);
}
return value;
}



/**
* 获取缓存
* @param key 键
* @return 值
*/
public static Set<String> getSet(String key) {
Set<String> value = null;
Jedis jedis = null;
try {
jedis = getResource();
if (jedis.exists(key)) {
value = jedis.smembers(key);
logger.debug("getSet {} = {}", key, value);
}
} catch (Exception e) {
logger.warn("getSet {} = {}", key, value, e);
} finally {
returnResource(jedis);
}
return value;
}

/**
* 获取缓存
* @param key 键
* @return 值
*/
public static Set<Object> getObjectSet(String key) {
Set<Object> value = null;
Jedis jedis = null;
try {
jedis = getResource();
if (jedis.exists(getBytesKey(key))) {
value = Sets.newHashSet();
Set<byte[]> set = jedis.smembers(getBytesKey(key));
for (byte[] bs : set){
value.add(toObject(bs));
}
logger.debug("getObjectSet {} = {}", key, value);
}
} catch (Exception e) {
logger.warn("getObjectSet {} = {}", key, value, e);
} finally {
returnResource(jedis);
}
return value;
}

/**
* 设置Set缓存
* @param key 键
* @param value 值
* @param cacheSeconds 超时时间,0为不超时
* @return
*/
public static long setSet(String key, Set<String> value, int cacheSeconds) {
long result = 0;
Jedis jedis = null;
try {
jedis = getResource();
if (jedis.exists(key)) {
jedis.del(key);
}
result = jedis.sadd(key, (String[])value.toArray());
if (cacheSeconds != 0) {
jedis.expire(key, cacheSeconds);
}
logger.debug("setSet {} = {}", key, value);
} catch (Exception e) {
logger.warn("setSet {} = {}", key, value, e);
} finally {
returnResource(jedis);
}
return result;
}

/**
* 设置Set缓存
* @param key 键
* @param value 值
* @param cacheSeconds 超时时间,0为不超时
* @return
*/
public static long setObjectSet(String key, Set<Object> value, int cacheSeconds) {
long result = 0;
Jedis jedis = null;
try {
jedis = getResource();
if (jedis.exists(getBytesKey(key))) {
jedis.del(key);
}
Set<byte[]> set = Sets.newHashSet();
for (Object o : value){
set.add(toBytes(o));
}
result = jedis.sadd(getBytesKey(key), (byte[][])set.toArray());
if (cacheSeconds != 0) {
jedis.expire(key, cacheSeconds);
}
logger.debug("setObjectSet {} = {}", key, value);
} catch (Exception e) {
logger.warn("setObjectSet {} = {}", key, value, e);
} finally {
returnResource(jedis);
}
return result;
}

/**
* 向Set缓存中添加值
* @param key 键
* @param value 值
* @return
*/
public static long setSetAdd(String key, String... value) {
long result = 0;
Jedis jedis = null;
try {
jedis = getResource();
result = jedis.sadd(key, value);
logger.debug("setSetAdd {} = {}", key, value);
} catch (Exception e) {
logger.warn("setSetAdd {} = {}", key, value, e);
} finally {
returnResource(jedis);
}
return result;
}


/**
* 向Set缓存中添加值
* @param key 键
* @param value 值
* @return
*/
public static long setSetObjectAdd(String key, Object... value) {
long result = 0;
Jedis jedis = null;
try {
jedis = getResource();
Set<byte[]> set = Sets.newHashSet();
for (Object o : value){
set.add(toBytes(o));
}
result = jedis.rpush(getBytesKey(key), (byte[][])set.toArray());
logger.debug("setSetObjectAdd {} = {}", key, value);
} catch (Exception e) {
logger.warn("setSetObjectAdd {} = {}", key, value, e);
} finally {
returnResource(jedis);
}
return result;
}


/**
* 获取Map缓存
* @param key 键
* @return 值
*/
public static Map<String, Object> getObjectMap(String key) {
Map<String, Object> value = null;
Jedis jedis = null;
try {
jedis = getResource();
if (jedis.exists(getBytesKey(key))) {
value = Maps.newHashMap();
Map<byte[], byte[]> map = jedis.hgetAll(getBytesKey(key));
for (Map.Entry<byte[], byte[]> e : map.entrySet()){
value.put(StringUtils.toString(e.getKey()), toObject(e.getValue()));
}
logger.debug("getObjectMap {} = {}", key, value);
}
} catch (Exception e) {
logger.warn("getObjectMap {} = {}", key, value, e);
} finally {
returnResource(jedis);
}
return value;
}
/**
* 设置Map缓存
* @param key 键
* @param value 值
* @param cacheSeconds 超时时间,0为不超时
* @return
*/
public static String setMap(String key, Map<String, Object> value, int cacheSeconds) {
String result = null;
Jedis jedis = null;
try {
jedis = getResource();
if (jedis.exists(getBytesKey(key))) {
jedis.del(key);
}
Map<byte[], byte[]> map = Maps.newHashMap();
for (Map.Entry<String, Object> e : value.entrySet()){
map.put(getBytesKey(e.getKey()), toBytes(e.getValue()));
}
result = jedis.hmset(getBytesKey(key), (Map<byte[], byte[]>)map);
if (cacheSeconds != 0) {
jedis.expire(key, cacheSeconds);
}
logger.debug("setObjectMap {} = {}", key, value);
} catch (Exception e) {
logger.warn("setObjectMap {} = {}", key, value, e);
} finally {
returnResource(jedis);
}
return result;
}


/**
* 向Map缓存中添加值
* @param key 键
* @param value 值
* @return
*/
public static String mapPut(String key, Map<String, Object> value) {
String result = null;
Jedis jedis = null;
try {
jedis = getResource();
Map<byte[], byte[]> map = Maps.newHashMap();
for (Map.Entry<String, Object> e : value.entrySet()){
map.put(getBytesKey(e.getKey()), toBytes(e.getValue()));
}
result = jedis.hmset(getBytesKey(key), (Map<byte[], byte[]>)map);
logger.debug("mapObjectPut {} = {}", key, value);
} catch (Exception e) {
logger.warn("mapObjectPut {} = {}", key, value, e);
} finally {
returnResource(jedis);
}
return result;
}


/**
* 移除Map缓存中的值
* @param key 键
* @param value 值
* @return
*/
public static long mapRemove(String key, String mapKey) {
long result = 0;
Jedis jedis = null;
try {
jedis = getResource();
result = jedis.hdel(getBytesKey(key), getBytesKey(mapKey));
logger.debug("mapObjectRemove {}  {}", key, mapKey);
} catch (Exception e) {
logger.warn("mapObjectRemove {}  {}", key, mapKey, e);
} finally {
returnResource(jedis);
}
return result;
}


/**
* 判断Map缓存中的Key是否存在
* @param key 键
* @param value 值
* @return
*/
public static boolean mapExists(String key, String mapKey) {
boolean result = false;
Jedis jedis = null;
try {
jedis = getResource();
result = jedis.hexists(getBytesKey(key), getBytesKey(mapKey));
logger.debug("mapObjectExists {}  {}", key, mapKey);
} catch (Exception e) {
logger.warn("mapObjectExists {}  {}", key, mapKey, e);
} finally {
returnResource(jedis);
}
return result;
}

/**
* 删除缓存
* @param key 键
* @return
*/
public static long del(String key) {
long result = 0;
Jedis jedis = null;
try {
jedis = getResource();
if (jedis.exists(key)){
result = jedis.del(key);
logger.debug("del {}", key);
}else{
logger.debug("del {} not exists", key);
}
} catch (Exception e) {
logger.warn("del {}", key, e);
} finally {
returnResource(jedis);
}
return result;
}


/**
* 删除缓存
* @param key 键
* @return
*/
public static long delObject(String key) {
long result = 0;
Jedis jedis = null;
try {
jedis = getResource();
if (jedis.exists(getBytesKey(key))){
result = jedis.del(getBytesKey(key));
logger.debug("delObject {}", key);
}else{
logger.debug("delObject {} not exists", key);
}
} catch (Exception e) {
logger.warn("delObject {}", key, e);
} finally {
returnResource(jedis);
}
return result;
}

/**
* 缓存是否存在
* @param key 键
* @return
*/
public static boolean exists(String key) {
boolean result = false;
Jedis jedis = null;
try {
jedis = getResource();
result = jedis.exists(key);
logger.debug("exists {}", key);
} catch (Exception e) {
logger.warn("exists {}", key, e);
} finally {
returnResource(jedis);
}
return result;
}

/**
* 缓存是否存在
* @param key 键
* @return
*/
public static boolean existsObject(String key) {
boolean result = false;
Jedis jedis = null;
try {
jedis = getResource();
result = jedis.exists(getBytesKey(key));
logger.debug("existsObject {}", key);
} catch (Exception e) {
logger.warn("existsObject {}", key, e);
} finally {
returnResource(jedis);
}
return result;
}


/**
* 获取资源
* @return
* @throws JedisException
*/
public static Jedis getResource() throws JedisException {
Jedis jedis = null;
try {
jedis = jedisPool.getResource();
// logger.debug("getResource.", jedis);
} catch (JedisException e) {
logger.warn("getResource.", e);
returnBrokenResource(jedis);
throw e;
}
return jedis;
}


/**
* 归还资源
* @param jedis
* @param isBroken
*/
public static void returnBrokenResource(Jedis jedis) {
if (jedis != null) {
jedisPool.returnBrokenResource(jedis);
}
}

/**
* 释放资源
* @param jedis
* @param isBroken
*/
public static void returnResource(Jedis jedis) {
if (jedis != null) {
jedisPool.returnResource(jedis);
}
}


/**
* 获取byte[]类型object
* @param object
* @return
*/
public static byte[] getBytesKey(Object object){
if(object instanceof String){
    return StringUtils.getBytes((String)object);
    }else{
    return ObjectUtils.serialize(object);
    }
}

/**
* 获取byte[]类型Key
* @param key
* @return
*/
public static Object getObjectKey(byte[] key){
try{
return StringUtils.toString(key);
}catch(UnsupportedOperationException uoe){
try{
return JedisUtils.toObject(key);
}catch(UnsupportedOperationException uoe2){
uoe2.printStackTrace();
}
}
return null;
}

/**
* Object转换byte[]类型
* @param key
* @return
*/
public static byte[] toBytes(Object object){
    return ObjectUtils.serialize(object);
}


/**
* byte[]型转换Object
* @param key
* @return
*/
public static Object toObject(byte[] bytes){
return ObjectUtils.unserialize(bytes);
}
}
 ObjectUtils.java

package com.youquhd.common.redis;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.Closeable;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;


import org.apache.commons.lang3.StringUtils;


/**
 * @author liucx
 */
public class ObjectUtils extends org.apache.commons.lang3.ObjectUtils {


/**
* 注解到对象复制,只复制能匹配上的方法。
* @param annotation
* @param object
*/
public static void annotationToObject(Object annotation, Object object){
if (annotation != null){
Class<?> annotationClass = annotation.getClass();
Class<?> objectClass = object.getClass();
for (Method m : objectClass.getMethods()){
if (StringUtils.startsWith(m.getName(), "set")){
try {
String s = StringUtils.uncapitalize(StringUtils.substring(m.getName(), 3));
Object obj = annotationClass.getMethod(s).invoke(annotation);
if (obj != null && !"".equals(obj.toString())){
if (object == null){
object = objectClass.newInstance();
}
m.invoke(object, obj);
}
} catch (Exception e) {
// 忽略所有设置失败方法
}
}
}
}
}

/**
* 序列化对象
* @param object
* @return
*/
public static byte[] serialize(Object object) {
ObjectOutputStream oos = null;
ByteArrayOutputStream baos = null;
try {
if (object != null){
if(object instanceof String){
return ((String) object).getBytes();
}
baos = new ByteArrayOutputStream();
oos = new ObjectOutputStream(baos);
oos.writeObject(object);
return baos.toByteArray();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}


/**
* 反序列化对象
* @param bytes
* @return
*/
public static Object unserialize(byte[] bytes) {
ByteArrayInputStream bais = null;
try {
if (bytes != null && bytes.length > 0){
bais = new ByteArrayInputStream(bytes);
ObjectInputStream ois = new ObjectInputStream(bais);
return ois.readObject();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}


/** 
     * 序列化 list 集合 
     *  
     * @param list 
     * @return 
     */  
    public static byte[] serializeList(List<?> list) {  
        if (list==null||list.isEmpty()) {  
            return null;  
        }  
        ObjectOutputStream oos = null;  
        ByteArrayOutputStream baos = null;  
        byte[] bytes = null;  
        try {  
            baos = new ByteArrayOutputStream();  
            oos = new ObjectOutputStream(baos);  
            for (Object obj : list) {  
                oos.writeObject(obj);  
            }  
            bytes = baos.toByteArray();  
        } catch (Exception e) {  
            e.printStackTrace();  
        } finally {
          close(oos);  
              close(baos);
        }  
        return bytes;  
    }  
    
    /** 
     * 反序列化 list 集合 
     * @param bytes 
     * @return 
     */  
    public static List<?> unserializeList(byte[] bytes) {  
        if (bytes == null) {  
            return null;  
        }  
  
        List<Object> list = new ArrayList<Object>();  
        ByteArrayInputStream bais = null;  
        ObjectInputStream ois = null;  
        try {  
            // 反序列化  
            bais = new ByteArrayInputStream(bytes);  
            ois = new ObjectInputStream(bais);  
            while (bais.available() > 0) {  
                Object obj = (Object) ois.readObject();  
                if (obj == null) {  
                    break;  
                }  
                list.add(obj);  
            }  
        } catch (Exception e) {  
            e.printStackTrace();  
        } finally {  
            close(bais);  
            close(ois);  
        }  
        return list;  
    }  
    
    
    public static void close(Closeable closeable){
    try {
closeable.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
    }
  
}


0
0
分享到:
评论

相关推荐

    Redis,redis封装核心方法

    Redis常用方法封装核心类;对象序列化和反序列化;RedisSession 用于微信分部署session操作;Redis数据源操作接口;商品Redis 存储查询 针对redis缓存技术进行了封装,对象类型存贮封装了序列化,redis穿透的处理。

    redis基本命令-封装redis常用基本命令.zip

    封装redis常用基本命令.zip封装redis常用基本命令.zip封装redis常用基本命令.zip封装redis常用基本命令.zip封装redis常用基本命令.zip封装redis常用基本命令.zip封装redis常用基本命令.zip封装redis常用基本命令.zip...

    Java操作Redis实例,操作封装

    有了连接池,我们就可以编写一系列的Redis操作方法,封装在自定义的RedisUtil工具类中。例如,设置键值对的方法: ```java public class RedisUtil { private static JedisPool jedisPool; static { jedisPool ...

    基于github.com,gomodule,redigo,对常用的redis进行了封装,让你更方便的使用 .zip

    基于github.com/gomodule/redigo,对常用的redis进行了封装,让你更方便的使用。redisgo基于github.com/gomodule/redigo,对常用的redis进行了封装,让你更方便的使用。特性支持游泳池支持退出时关闭连接池支持多种...

    封装redis常用基本命令.zip

    本压缩包"封装redis常用基本命令.zip"提供了对Redis常用命令的封装,便于在编程中更便捷地操作Redis。以下将详细阐述Redis的一些核心概念和常用命令。 1. 数据类型: - 字符串(String):最基础的数据类型,可以...

    go-redis 常用操作工具类封装

    接下来,我们将讨论`go-redis`的一些常用操作: 1. **键值操作**:设置和获取键值是最基础的操作。使用`Set`方法可以设置键值对,而`Get`用于获取键对应的值: ```go rdb.Set(ctx, "key", "value", 0).Result() ...

    go语言学习 - 封装redis常用基本命令.zip

    "Go语言学习 - 封装Redis常用基本命令.zip"这个压缩包文件显然是为了教授如何使用Go语言来操作Redis。首先,我们需要理解Go语言中的网络编程和数据库连接概念。Go语言的net包提供了创建TCP、UDP等网络连接的能力,这...

    redisTemplate封装成redisUtils和分布式锁实现

    现在,我们可以创建一个RedisUtils工具类,封装常用的操作: ```java public class RedisUtils { @Autowired private RedisTemplate, Object&gt; redisTemplate; public boolean set(String key, Object value, ...

    Go-基于redisgo进行了封装代码量减少

    3. **操作接口**:封装`Redigo`的常用方法,如`Get`、`Set`、`HMSet`、`LPush`等,将它们包装成简单的函数,接受必要的参数,内部处理与Redis的交互。这样可以避免在代码中直接与`Redigo`的低级别API打交道。 4. **...

    Linux下C++操作mysql和redis数据库的封装

    包含了mysql常用的增删改查操作,支持容器数据添加,各种模板数据添加,支持单行增加删除,单行数据修改,多行数据增加删除,多行数据修改,清空表格,多条件查询,多条件删除等等很多便捷的操作,插入和删除数据快...

    C++封装Redis访问类

    一个常用的C++ Redis客户端库是`rediscpp`或`hiredis`。这两个库提供了C++接口来执行Redis命令,如设置和获取键值对。 1. **安装Redis客户端库**: 在项目中引入合适的Redis客户端库。例如,对于`rediscpp`,可以...

    REDIS_redis的工具包_redisinlabview_labviewredis_labview调用redis_redis

    它可能包含了一个或多个库,这些库封装了Redis协议,以便于LabVIEW中的数据传输。通过这个工具包,用户可以直接在LabVIEW程序中执行诸如设置键值、获取键值、执行事务、操作列表和集合等操作。`Palette`文件夹中的...

    redis基本工具类

    Redis是一款高性能的键值对数据库,常用于缓存、消息队列等场景。在Java开发中,我们通常会使用各种工具类或者客户端...通过合理地组织和封装这些操作,开发者可以专注于业务逻辑,而不用过多关注底层数据存储的细节。

    golang(gin)整合mysql,整合redis通用脚手架

    为了保持代码的整洁和可维护性,通常会创建一个数据访问对象(DAO)层来封装数据库操作。 再来看看如何整合Redis。Redis是一个内存数据结构存储系统,可以作为数据库、缓存和消息代理使用。在Go中,我们可以使用`go...

    Spring mvc整合redis实例(redis连接池)

    此外,为了进一步简化代码,可以自定义一个服务类,将常用的Redis操作封装成方法,比如增加、删除、更新和查询,这样在控制器中调用就更加方便了。 通过以上步骤,我们成功地在Spring MVC项目中整合了Redis,并使用...

    C#DLL redis

    在.NET环境中,C#是常用的开发语言,因此将Redis功能封装到C# DLL中可以方便地在.NET项目中集成Redis服务。本文将深入探讨“C# DLL redis”这一主题,包括其原理、使用方法和优势。 首先,让我们了解什么是C# DLL。...

    常用redis-3.0.0.gem

    Redis-3.0.0.gem是Redis在Ruby语言环境中的封装库,便于Ruby开发者在项目中集成和使用Redis服务。下面我们将深入探讨Redis的基础知识、3.0.0版本的特点以及如何在Ruby中安装和使用Redis。 1. Redis基础知识: - ...

    基于hiredis封装的redis哨兵模式的C++库(跨平台支持)

    该库功能包含了redis哨兵模式的服务启动,关闭,几乎涵盖了所有常用的redis操作,如果有缺少,你可以很方便的添加方法即可,当redis一个节点断开连接后会自动选举产生一个新的连接。 该库已经在我的多款爆款游戏中...

    redis的集群配置及代码封装

    Jedis 是 Java 开发者常用的一个 Redis 客户端库,提供了丰富的 API 用于操作 Redis 数据。以下是一些基本操作的封装示例: 1. **连接池配置**:为了提高性能,通常我们会使用连接池(如 JedisPool)来管理 Redis ...

Global site tag (gtag.js) - Google Analytics