All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.jeesuite.cache.command.RedisBatchCommand Maven / Gradle / Ivy

There is a newer version: 1.4.0
Show newest version
/**
 * 
 */
package com.jeesuite.cache.command;

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.jeesuite.cache.redis.JedisProviderFactory;
import com.jeesuite.common.serializer.SerializeUtils;

import redis.clients.util.SafeEncoder;

/**
 * @description 
* @author vakin * @date 2015年12月9日 */ public class RedisBatchCommand { protected static final Logger logger = LoggerFactory.getLogger(RedisBatchCommand.class); protected static final String RESP_OK = "OK"; /** * 指定组批量写入字符串 * @param groupName 缓存组 * @param keyValueMap * @return */ public static boolean setStringsWithGroup(String groupName,Map keyValueMap){ if(keyValueMap == null || keyValueMap.isEmpty())return false; String[] keysValues = new String[keyValueMap.size() * 2]; int index = 0; for (String key : keyValueMap.keySet()) { if(keyValueMap.get(key) == null)continue; keysValues[index++] = key; keysValues[index++] = keyValueMap.get(key).toString(); } try { if(JedisProviderFactory.isCluster(groupName)){ return JedisProviderFactory.getMultiKeyJedisClusterCommands(groupName).mset(keysValues).equals(RESP_OK); }else{ return JedisProviderFactory.getMultiKeyCommands(groupName).mset(keysValues).equals(RESP_OK); } } finally { JedisProviderFactory.getJedisProvider(groupName).release(); } } /** * 默认组批量写入字符串 * @param groupName 缓存组 * @param keyValueMap * @return */ public static boolean setStrings(Map keyValueMap){ return setStringsWithGroup(null, keyValueMap); } /** * 指定组批量写入对象 * @param groupName 缓存组 * @param keyValueMap * @return */ public static boolean setObjectsWithGroup(String groupName,Map keyValueMap){ if(keyValueMap == null || keyValueMap.isEmpty())return false; byte[][] keysValues = new byte[keyValueMap.size() * 2][]; int index = 0; for (String key : keyValueMap.keySet()) { if(keyValueMap.get(key) == null)continue; keysValues[index++] = SafeEncoder.encode(key); keysValues[index++] = SerializeUtils.serialize(keyValueMap.get(key)); } try { if(JedisProviderFactory.isCluster(groupName)){ return JedisProviderFactory.getMultiKeyBinaryJedisClusterCommands(groupName).mset(keysValues).equals(RESP_OK); }else{ return JedisProviderFactory.getMultiKeyBinaryCommands(groupName).mset(keysValues).equals(RESP_OK); } } finally { JedisProviderFactory.getJedisProvider(groupName).release(); } } /** * 默认组批量写入对象 * @param groupName 缓存组 * @param keyValueMap * @return */ public static boolean setObjects(Map keyValueMap){ return setObjectsWithGroup(null, keyValueMap); } /** * 按key批量从redis获取值(指定缓存组名) * @param groupName * @param keys * @return list */ public static List getStringsWithGroup(String groupName,String...keys){ try { if(JedisProviderFactory.isCluster(groupName)){ return JedisProviderFactory.getMultiKeyJedisClusterCommands(groupName).mget(keys); }else{ return JedisProviderFactory.getMultiKeyCommands(groupName).mget(keys); } } finally { JedisProviderFactory.getJedisProvider(groupName).release(); } } public static List getStrings(String...keys){ return getStringsWithGroup(null, keys); } public static boolean removeStringsWithGroup(String groupName,String...keys){ try { if(JedisProviderFactory.isCluster(groupName)){ return JedisProviderFactory.getMultiKeyJedisClusterCommands(groupName).del(keys) == 1; }else{ return JedisProviderFactory.getMultiKeyCommands(groupName).del(keys) == 1; } } finally { JedisProviderFactory.getJedisProvider(groupName).release(); } } public static boolean removeStrings(String...keys){ return removeStringsWithGroup(null, keys); } public static boolean removeObjectsWithGroup(String groupName,String...keys){ byte[][] byteKeys = SafeEncoder.encodeMany(keys); try { if(JedisProviderFactory.isCluster(groupName)){ return JedisProviderFactory.getMultiKeyBinaryJedisClusterCommands(groupName).del(byteKeys) == 1; }else{ return JedisProviderFactory.getMultiKeyBinaryCommands(groupName).del(byteKeys) == 1; } } finally { JedisProviderFactory.getJedisProvider(groupName).release(); } } public static boolean removeObjects(String...keys){ return removeObjectsWithGroup(null, keys); } public static List getObjectsWithGroup(String groupName, String... keys) { byte[][] byteKeys = SafeEncoder.encodeMany(keys); try { if (JedisProviderFactory.isCluster(groupName)) { List bytes = JedisProviderFactory.getMultiKeyBinaryJedisClusterCommands(groupName) .mget(byteKeys); return listDerialize(bytes); } else { List bytes = JedisProviderFactory.getMultiKeyBinaryCommands(groupName).mget(byteKeys); return listDerialize(bytes); } } finally { JedisProviderFactory.getJedisProvider(groupName).release(); } } public static List getObjects(String...keys){ return getObjectsWithGroup(null, keys); } public static void removeByKeyPrefix(String keyPrefix){ removeByKeyPrefix(null, keyPrefix); } public static void removeByKeyPrefix(String group,String keyPrefix){ try { Set keys = JedisProviderFactory.getMultiKeyCommands(group).keys(keyPrefix +"*"); if(keys != null && keys.size() > 0){ RedisBatchCommand.removeObjectsWithGroup(group,keys.toArray(new String[0])); } } finally { JedisProviderFactory.getJedisProvider(group).release(); } } private static T valueDerialize(byte[] bytes) { if(bytes == null)return null; try { return (T)SerializeUtils.deserialize(bytes); } catch (Exception e) { return null; } } private static List listDerialize(List datas){ List list = new ArrayList<>(); if(datas == null)return list; for (byte[] bs : datas) { list.add((T)valueDerialize(bs)); } return list; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy