Redis 学习(四)Jedis使用
2016-06-07 16:16
645 查看
上篇文章说明了redis 集群、分片的几种方式。一般的数据和流量不高的项目用一个redis做缓存或者分片基本能够满足需求。
下面就针对jedis做一个简单demo。
1、准备jedis环境
JedisPool
JedisClient
下面就针对jedis做一个简单demo。
1、准备jedis环境
<dependencies> <!-- jedis 客户端 目前到2.8.X start --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.7.0</version> </dependency> <!-- jedis 客户端 end --> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.2.4</version> </dependency> </dependencies>2、jedis支持连接池和分片连接池
JedisPool
import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; /** * redis连接池 * @author yangfenge * 2016年6月2日 */ public class RedisPool { private static JedisPool pool; /** * 创建连接池 * @param host redis机器地址 * @param port redis机器端口 */ private static void createJedisPool(String host,int port){ JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); // 设置最大连接数 jedisPoolConfig.setMaxTotal(100); // 设置最大阻塞时间,记住是毫秒数milliseconds jedisPoolConfig.setMaxWaitMillis(1000); // 设置空间连接 jedisPoolConfig.setMaxIdle(10); // 创建连接池 pool = new JedisPool(jedisPoolConfig, host, port); } /** * 同步初始化连接池,防止多线程调用重复创建 * @param host redis机器地址 * @param port redis机器端口 */ public static synchronized JedisPool GetIntance(String host,int port){ if (pool==null) { createJedisPool(host,port); } return pool; } }ShardJedisPool
/** * redis分片连接池 * @author yangfenge * 2016年6月2日 */ public class RedisShardPool { private static ShardedJedisPool pool; /** * 创建分片连接池 * @param confs 分片的各个机器配置 */ private static void createJedisPool(List<Map<String, Integer>> confs){ JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); // 设置最大连接数 jedisPoolConfig.setMaxTotal(100); // 设置最大阻塞时间,记住是毫秒数milliseconds jedisPoolConfig.setMaxWaitMillis(1000); // 设置空间连接 jedisPoolConfig.setMaxIdle(10); List<JedisShardInfo> jedisShardInfos = new ArrayList<JedisShardInfo>(); for (Map<String, Integer> item : confs) { Set<Entry<String, Integer>> conf = item.entrySet(); for (Entry<String, Integer> entry : conf) { JedisShardInfo jedisShardInfo = new JedisShardInfo(entry.getKey(), entry.getKey()); jedisShardInfos.add(jedisShardInfo); break; } } // 创建连接池 pool = new ShardedJedisPool(jedisPoolConfig,jedisShardInfos); } /** * 同步初始化连接池,防止多线程调用重复创建 * @param confs 分片的各个机器配置 */ public static synchronized ShardedJedisPool GetIntance(List<Map<String, Integer>> confs){ if (pool==null) { createJedisPool(confs); } return pool; } }3、jedis客户端和jedis分片客户端
JedisClient
/** * redis客户端 * * @author yangfenge 2016年6月2日 */ public class JedisClient { private static JedisPool pool; /** * 获取redis客户端jedis * * @param host * @param port * @return */ public static Jedis GetIntance(String host, int port) { pool = RedisPool.GetIntance(host, port); return pool.getResource(); } /** * 释放redis客户端jedis * * @param host * @param port * @return */ public static void ReturnJedisToPool(Jedis jedis) { pool.returnResourceObject(jedis); } }JedisShardClient
/** * redis分片客户端 * * @author yangfenge 2016年6月2日 */ public class JedisShardClient { private static ShardedJedisPool pool; /** * 获取redis分片客户端jedis * * @param host * @param port * @return */ public static ShardedJedis GetIntance(List<Map<String, Integer>> confs) { pool = RedisShardPool.GetIntance(confs); return pool.getResource(); } /** * 释放redis客户端分片jedis * * @param host * @param port * @return */ public static void ReturnJedisToPool(ShardedJedis jedis) { pool.returnResourceObject(jedis); } }
相关文章推荐
- redis安装问题小结
- 使用 Redis 和 Python 构建一个共享单车的应用程序
- Redis偶发连接失败案例实战记录
- Redis中实现查找某个值的范围
- win 7 安装redis服务【笔记】
- redis的hGetAll函数的性能问题(记Redis那坑人的HGETALL)
- Redis和Memcached的区别详解
- 分割超大Redis数据库例子
- Redis总结笔记(一):安装和常用命令
- Redis sort 排序命令详解
- 用Redis实现微博关注关系
- Redis实现信息已读未读状态提示
- redis中修改配置文件中的端口号 密码方法
- 在Ruby on Rails上使用Redis Store的方法
- Redis和Memcache的区别总结
- 在Node.js应用中使用Redis的方法简介
- Redis服务器的启动过程分析
- web 应用中常用的各种 cache详解
- 利用yum安装Redis的方法详解
- 从MySQL到Redis的简单数据库迁移方法