Redis学习(三)-Java实现基于Jedis+Spring的通用工具类
来源:互联网 发布:机枪升级数据 编辑:程序博客网 时间:2024/05/16 10:56
Spring整合Jedis
Maven引入
<!--Spring Data Redis--> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>${spring-data-redis.version}</version> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>${jedis.version}</version> </dependency>
Java配置类(也可以用XML)
@Configuration@EnableCachingpublic class RedisCacheConfig extends CachingConfigurerSupport{ @Value("${redis_host}") String redisHost; @Value("${redis_port}") Integer redisPort; @Value("${redis_keynum}") Integer redisKeynum; Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName()); public RedisCacheConfig() { System.out.println("Java配置类初始化"); } @Bean public JedisPoolConfig jedisPoolConfig() { JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPoolConfig.setMaxWaitMillis(60 * 1000); jedisPoolConfig.setMaxTotal(1000); jedisPoolConfig.setMaxIdle(100); return jedisPoolConfig; } @Bean public JedisPool jedisPool(JedisPoolConfig jedisPoolConfig) { JedisPool jedisPool = new JedisPool(jedisPoolConfig,redisHost,redisPort,999999999); return jedisPool; } @Bean public Jedis jedis(JedisPool jedisPool) { Jedis jedis = jedisPool.getResource(); jedis.select(redisKeynum); return jedis; } @Bean public JedisConnectionFactory redisConnectionFactory() { JedisConnectionFactory factory = new JedisConnectionFactory(); System.out.println(redisHost + ":" + redisPort + "-" + redisKeynum); logger.info(redisHost + ":" + redisPort + "-" + redisKeynum); factory.setHostName(redisHost); factory.setPort(redisPort); factory.setDatabase(redisKeynum); return factory; } @Bean public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate<String,String> template = new RedisTemplate<>(); template.setConnectionFactory(redisConnectionFactory); return template; } @Bean public CacheManager cacheManager(RedisTemplate redisTemplate) { RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate); cacheManager.setDefaultExpiration(0);; return cacheManager; }}
封装Jedis工具类
/** * Jedis工具类 * * @author NikoBelic * @create 21/01/2017 13:41 */@Componentpublic class JedisUtils{ @Autowired Jedis jedis; private JedisUtils() { } // ********************** String Oprations ************************* public String set(String key, String val) { return jedis.set(key, val); } public String get(String key) { return jedis.get(key); } public Long incrBy(String key, Integer increment) { return jedis.incrBy(key, increment); } public Long decrBy(String key, Integer decrement) { return jedis.incrBy(key, decrement); } // ********************** List Oprations ************************* /** * 从左侧推入元素 * @Author NikoBelic * @Date 21/01/2017 17:47 */ public <T extends Serializable> Long lPushObj(String key, T... obj) { byte[] serializedObj; long count = 0; for (T t : obj) { serializedObj = SerializationUtil.serialize(t); jedis.lpush(key.getBytes(),serializedObj); count++; } return count; } /** * 从列表左侧弹出数据 * @Author NikoBelic * @Date 21/01/2017 17:47 */ public <T extends Serializable> T lPop(String key) { byte[] obj = jedis.lpop(key.getBytes()); return SerializationUtil.deserialize(obj); } /** * 获取指定范围内的列表元素 * @Author NikoBelic * @Date 21/01/2017 17:47 */ public <T extends Serializable> List<T> lRange(String key,int from,int to) { List<byte[]> byteList = jedis.lrange(key.getBytes(), from, to); List<T> objList = null; if (byteList.size() > 0) { objList = new ArrayList<T>(); for (byte[] obj : byteList) { objList.add(SerializationUtil.deserialize(obj)); } } return objList; } // ********************** Set Oprations ************************* /** * 向集合中添加元素 * @Author NikoBelic * @Date 21/01/2017 18:06 */ public <T extends Serializable> Long sAdd(String key, T... obj) { byte[] serializedObj; long count = 0; for (T t : obj) { serializedObj = SerializationUtil.serialize(t); jedis.sadd(key.getBytes(),serializedObj); count++; } return count; } /** * 返回集合中的所有元素 * @Author NikoBelic * @Date 21/01/2017 18:06 */ public <T extends Serializable> Set<T> sMembers(String key) { Set<byte[]> byteList = jedis.smembers(key.getBytes()); Set<T> objList = null; if (byteList.size() > 0) { objList = new HashSet<T>(); for (byte[] obj : byteList) { objList.add(SerializationUtil.deserialize(obj)); } } return objList; } /** * 判断对象是否存在于集合中 * 注意:判断标准是列化后的字符串是否相同,即时不同的对象但序列化结果相同也将返回true * @Author NikoBelic * @Date 21/01/2017 18:04 */ public <T extends Serializable> Boolean sIsMember(String key, T obj) { byte[] serializedObj = SerializationUtil.serialize(obj); return jedis.sismember(key.getBytes(),serializedObj); } // ********************** Hash Oprations ************************* /** * 向哈希表存储键值对数据 * @Author NikoBelic * @Date 21/01/2017 18:41 */ public <T extends Serializable> String hmSet(String key, Map<String,T> map) { Map<byte[],byte[]> objMap; if (map.size() > 0) { objMap = new HashMap<>(); for (Map.Entry<String, T> entry : map.entrySet()) { objMap.put(entry.getKey().getBytes(), SerializationUtil.serialize(entry.getValue())); } return jedis.hmset(key.getBytes(), objMap); } return null; } /** * 从Hash中取出键值对数据 * @Author NikoBelic * @Date 21/01/2017 18:41 */ public <T extends Serializable> List<T> hmGet(String key, String... fields) { List<T> resObjs = new ArrayList<T>(); for (String field : fields) { resObjs.add(SerializationUtil.deserialize(jedis.hget(key.getBytes(),field.getBytes()))); } return resObjs; } // ********************** ZSet Oprations *************************}
测试方法
@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = {"classpath*:spring/applicationContext*.xml"})public class TestRedis{ @Autowired private JedisUtils jedisUtils; @Test public void testString() { System.out.println(jedisUtils.set("address", "ShangHai")); System.out.println(jedisUtils.get("address")); try { System.out.println(jedisUtils.incrBy("address", 100)); } catch (Exception e) { System.out.println(e.getMessage() + "自增操作异常"); } jedisUtils.set("myint", "10"); System.out.println(jedisUtils.incrBy("myint", 100)); } @Test public void testList() { System.out.println(jedisUtils.lPushObj("strList", "NikoBelic","Tom","Helen")); //System.out.println((String) jedisUtils.lPop("strList")); //System.out.println((String) jedisUtils.lPop("strList")); List<String> strList = jedisUtils.lRange("strList", 0, -1); for (String s : strList) { System.out.println(s); } //System.out.println(jedisUtils.lPushObj("objList", new User("NikoBelic", 18), new User("Tom", 15), new User("Marry", 20))); //System.out.println((User) jedisUtils.lPop("objList")); //System.out.println((User) jedisUtils.lPop("objList")); //List<User> objList = jedisUtils.lRange("objList", 0, -1); //for (User user : objList) //{ // System.out.println(user); //} } @Test public void testSet() { //System.out.println(jedisUtils.sAdd("strSet", "NikoBelic","Tom","Helen")); //Set<String> strList = jedisUtils.sMembers("strSet"); //for (String s : strList) //{ // System.out.println(s); //} //System.out.println(jedisUtils.sAdd("objSet", new User("NikoBelic", 18), new User("Tom", 15), new User("Marry", 20))); //Set<User> objList = jedisUtils.sMembers("objSet"); //for (User user : objList) //{ // System.out.println(user); //} //User myObj = new User("Exist Test",20); //jedisUtils.sAdd("objSet",myObj); System.out.println(jedisUtils.sIsMember("objSet",new User("ExistTest",20))); } @Test public void testHash() { //Map<String,String> map = new HashMap<>(); //map.put("A","1"); //map.put("B","2"); //map.put("C","3"); //System.out.println(jedisUtils.hmSet("strHash",map)); //List<String> strs = jedisUtils.hmGet("strHash", "A", "B", "C"); //for (String str : strs) //{ // System.out.println(str); //} Map<String,User> map = new HashMap<>(); map.put("user1",new User("Niko",18)); map.put("user2",new User("Tom",20)); map.put("user3",new User("Marry",15)); System.out.println(jedisUtils.hmSet("objHash",map)); List<User> userList = jedisUtils.hmGet("objHash", "user1", "user2", "user3"); for (User user : userList) { System.out.println(user); } }}class User implements Serializable{ private String name; private int age; public User(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return "User{" + "name='" + name + '\'' + ", age='" + age + '\'' + '}'; }}
0 0
- Redis学习(三)-Java实现基于Jedis+Spring的通用工具类
- 基于Java的redis客户端jedis管理类 工具类
- redis学习记录(redis的持久化操作、基于java的jedis操作)
- redis学习记录(redis的持久化操作、基于java的jedis操作)
- Redis Java客户端jedis工具类以及Redis实现的跨jvm的锁
- Redis Java客户端jedis工具类以及Redis实现的跨jvm的锁
- Redis实践(三)基于jedis开发java应用:redis的8种方式设置key,value
- 基于Jedis实现Redis分片的理解
- 基于Jedis实现Redis分片的理解
- redis 学习笔记(5)-Spring与Jedis的集成
- Redis学习笔记(四) Spring与Jedis的集成
- Redis学习之java代码实现(Jedis)
- Spring Boot学习之旅:(六)springboot 整合 redis 以及 redis 通用工具类
- Redis实战之征服 Redis + Jedis + Spring (三)
- Redis实战之征服 Redis + Jedis + Spring (三)
- Redis实战之征服 Redis + Jedis + Spring (三)
- 基于Spring的 Redis工具类
- Redis 指南(4)- jedis工具类的封装
- 开发板linux中运行简单hello world应用程序的printf无输出的原因
- rollup、cube、grouping、rank、dense_rank、row_number函数简介
- 自动截取短信验证码
- JAX-RS规范-常用注解解析
- 11111UVa俄罗斯套娃
- Redis学习(三)-Java实现基于Jedis+Spring的通用工具类
- 玲珑-动态规划
- SDL库的学习笔记之二—初始化、退出
- Openstack源码分析 Ml2Plugin start_rpc_listener流程
- 【字符串】判断两字符串是否互为旋转词?
- 第五届蓝桥杯软件类国赛真题-C-A-2_六角幻方
- .Net多线程编程—使用Visual Studio 2012进行调试
- 关于CC2530存储器映射的讨论
- iOS 10 开发适配系列 之 权限Crash问题