源代码下载: http://download.csdn.net/detail/jiangtao_st/7623113

1、Maven配置

  1. <dependency>
  2. <groupId>redis.clients</groupId>
  3. <artifactId>jedis</artifactId>
  4. <version>2.5.0</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>com.alibaba</groupId>
  8. <artifactId>fastjson</artifactId>
  9. <version>1.1.41</version>
  10. </dependency></span>

2、Properties 配置文件

redis.pool.maxActive=100

redis.pool.maxIdle=20

redis.pool.maxWait=3000

redis.ip=localhost

redis.port=6379

3、代码具体实现的Client

  1. /**
  2. *
  3. * <p>
  4. *  Redis客户端访问
  5. * </p>
  6. *
  7. * @author 卓轩
  8. * @创建时间:2014年7月11日
  9. * @version: V1.0
  10. */
  11. public class RedisClient {
  12. public  static  JedisPool jedisPool; // 池化管理jedis链接池
  13. static {
  14. //读取相关的配置
  15. ResourceBundle resourceBundle = ResourceBundle.getBundle("redis");
  16. int maxActive = Integer.parseInt(resourceBundle.getString("redis.pool.maxActive"));
  17. int maxIdle = Integer.parseInt(resourceBundle.getString("redis.pool.maxIdle"));
  18. int maxWait = Integer.parseInt(resourceBundle.getString("redis.pool.maxWait"));
  19. String ip = resourceBundle.getString("redis.ip");
  20. int port = Integer.parseInt(resourceBundle.getString("redis.port"));
  21. JedisPoolConfig config = new JedisPoolConfig();
  22. //设置最大连接数
  23. config.setMaxTotal(maxActive);
  24. //设置最大空闲数
  25. config.setMaxIdle(maxIdle);
  26. //设置超时时间
  27. config.setMaxWaitMillis(maxWait);
  28. //初始化连接池
  29. jedisPool = new JedisPool(config, ip, port);
  30. }
  31. /**
  32. * 向缓存中设置字符串内容
  33. * @param key key
  34. * @param value value
  35. * @return
  36. * @throws Exception
  37. */
  38. public static boolean  set(String key,String value) throws Exception{
  39. Jedis jedis = null;
  40. try {
  41. jedis = jedisPool.getResource();
  42. jedis.set(key, value);
  43. return true;
  44. } catch (Exception e) {
  45. e.printStackTrace();
  46. return false;
  47. }finally{
  48. jedisPool.returnResource(jedis);
  49. }
  50. }
  51. /**
  52. * 向缓存中设置对象
  53. * @param key
  54. * @param value
  55. * @return
  56. */
  57. public static boolean  set(String key,Object value){
  58. Jedis jedis = null;
  59. try {
  60. String objectJson = JSON.toJSONString(value);
  61. jedis = jedisPool.getResource();
  62. jedis.set(key, objectJson);
  63. return true;
  64. } catch (Exception e) {
  65. e.printStackTrace();
  66. return false;
  67. }finally{
  68. jedisPool.returnResource(jedis);
  69. }
  70. }
  71. /**
  72. * 删除缓存中得对象,根据key
  73. * @param key
  74. * @return
  75. */
  76. public static boolean del(String key){
  77. Jedis jedis = null;
  78. try {
  79. jedis = jedisPool.getResource();
  80. jedis.del(key);
  81. return true;
  82. } catch (Exception e) {
  83. e.printStackTrace();
  84. return false;
  85. }finally{
  86. jedisPool.returnResource(jedis);
  87. }
  88. }
  89. /**
  90. * 根据key 获取内容
  91. * @param key
  92. * @return
  93. */
  94. public static Object get(String key){
  95. Jedis jedis = null;
  96. try {
  97. jedis = jedisPool.getResource();
  98. Object value = jedis.get(key);
  99. return value;
  100. } catch (Exception e) {
  101. e.printStackTrace();
  102. return false;
  103. }finally{
  104. jedisPool.returnResource(jedis);
  105. }
  106. }
  107. /**
  108. * 根据key 获取对象
  109. * @param key
  110. * @return
  111. */
  112. public static <T> T get(String key,Class<T> clazz){
  113. Jedis jedis = null;
  114. try {
  115. jedis = jedisPool.getResource();
  116. String value = jedis.get(key);
  117. return JSON.parseObject(value, clazz);
  118. } catch (Exception e) {
  119. e.printStackTrace();
  120. return null;
  121. }finally{
  122. jedisPool.returnResource(jedis);
  123. }
  124. }
  125. }

4、Sharding 分片管理

  1. /**
  2. *
  3. * <p>
  4. * Sharding Redis Client 工具类
  5. * </p>
  6. *
  7. * @author 卓轩
  8. * @创建时间:2014年7月11日
  9. * @version: V1.0
  10. */
  11. public class ShardingRedisClient {
  12. private static ShardedJedisPool shardedJedisPool;
  13. static {
  14. // 读取相关的配置
  15. ResourceBundle resourceBundle = ResourceBundle.getBundle("redis");
  16. int maxActive = Integer.parseInt(resourceBundle.getString("redis.pool.maxActive"));
  17. int maxIdle = Integer.parseInt(resourceBundle.getString("redis.pool.maxIdle"));
  18. int maxWait = Integer.parseInt(resourceBundle.getString("redis.pool.maxWait"));
  19. String ip = resourceBundle.getString("redis.ip");
  20. int port = Integer.parseInt(resourceBundle.getString("redis.port"));
  21. //设置配置
  22. JedisPoolConfig config = new JedisPoolConfig();
  23. config.setMaxTotal(maxActive);
  24. config.setMaxIdle(maxIdle);
  25. config.setMaxWaitMillis(maxWait);
  26. //设置分片元素信息
  27. JedisShardInfo shardInfo1 = new JedisShardInfo(ip,port);
  28. JedisShardInfo shardInfo2 = new JedisShardInfo(ip,port);
  29. List<JedisShardInfo> list = new ArrayList<JedisShardInfo>();
  30. list.add(shardInfo1);
  31. list.add(shardInfo2);
  32. shardedJedisPool = new ShardedJedisPool(config, list);
  33. }
  34. /**
  35. * 向缓存中设置字符串内容
  36. * @param key key
  37. * @param value value
  38. * @return
  39. * @throws Exception
  40. */
  41. public static boolean  set(String key,String value) throws Exception{
  42. ShardedJedis jedis = null;
  43. try {
  44. jedis = shardedJedisPool.getResource();
  45. jedis.set(key, value);
  46. return true;
  47. } catch (Exception e) {
  48. e.printStackTrace();
  49. return false;
  50. }finally{
  51. shardedJedisPool.returnResource(jedis);
  52. }
  53. }
  54. /**
  55. * 向缓存中设置对象
  56. * @param key
  57. * @param value
  58. * @return
  59. */
  60. public static boolean  set(String key,Object value){
  61. ShardedJedis jedis = null;
  62. try {
  63. String objectJson = JSON.toJSONString(value);
  64. jedis = shardedJedisPool.getResource();
  65. jedis.set(key, objectJson);
  66. return true;
  67. } catch (Exception e) {
  68. e.printStackTrace();
  69. return false;
  70. }finally{
  71. shardedJedisPool.returnResource(jedis);
  72. }
  73. }
  74. /**
  75. * 删除缓存中得对象,根据key
  76. * @param key
  77. * @return
  78. */
  79. public static boolean del(String key){
  80. ShardedJedis jedis = null;
  81. try {
  82. jedis = shardedJedisPool.getResource();
  83. jedis.del(key);
  84. return true;
  85. } catch (Exception e) {
  86. e.printStackTrace();
  87. return false;
  88. }finally{
  89. shardedJedisPool.returnResource(jedis);
  90. }
  91. }
  92. /**
  93. * 根据key 获取内容
  94. * @param key
  95. * @return
  96. */
  97. public static Object get(String key){
  98. ShardedJedis jedis = null;
  99. try {
  100. jedis = shardedJedisPool.getResource();
  101. Object value = jedis.get(key);
  102. return value;
  103. } catch (Exception e) {
  104. e.printStackTrace();
  105. return false;
  106. }finally{
  107. shardedJedisPool.returnResource(jedis);
  108. }
  109. }
  110. /**
  111. * 根据key 获取对象
  112. * @param key
  113. * @return
  114. */
  115. public static <T> T get(String key,Class<T> clazz){
  116. ShardedJedis jedis = null;
  117. try {
  118. jedis = shardedJedisPool.getResource();
  119. String value = jedis.get(key);
  120. return JSON.parseObject(value, clazz);
  121. } catch (Exception e) {
  122. e.printStackTrace();
  123. return null;
  124. }finally{
  125. shardedJedisPool.returnResource(jedis);
  126. }
  127. }
  128. }

5、 单元测试、保存对象、写入对象

    1. /**
    2. *
    3. * <p>
    4. *  测试独立redis 客户端
    5. * </p>
    6. *
    7. * @author 卓轩
    8. * @创建时间:2014年7月11日
    9. * @version: V1.0
    10. */
    11. public class SimpleClient {
    12. @Test
    13. public void userCache(){
    14. //向缓存中保存对象
    15. UserDO zhuoxuan = new UserDO();
    16. zhuoxuan.setUserId(113445);
    17. zhuoxuan.setSex(1);
    18. zhuoxuan.setUname("卓轩");
    19. zhuoxuan.setUnick("zhuoxuan");
    20. zhuoxuan.setEmail("zhuoxuan@mogujie.com");
    21. //调用方法处理
    22. boolean reusltCache = RedisClient.set("zhuoxuan", zhuoxuan);
    23. if (reusltCache) {
    24. System.out.println("向缓存中保存对象成功。");
    25. }else{
    26. System.out.println("向缓存中保存对象失败。");
    27. }
    28. }
    29. @Test
    30. public void getUserInfo(){
    31. UserDO zhuoxuan = RedisClient.get("zhuoxuan",UserDO.class);
    32. if(zhuoxuan != null){
    33. System.out.println("从缓存中获取的对象," + zhuoxuan.getUname() + "@" + zhuoxuan.getEmail());
    34. }
    35. }
    36. }

Redis缓存 ava-Jedis操作Redis,基本操作以及 实现对象保存的更多相关文章

  1. 【Redis】使用Jedis操作Redis

    Jedis介绍 jedis就是集成了redis的一些命令操作,封装了redis的java客户端. Jedis使用 使用jedis需要引入jedis的jar包,下面提供了maven依赖 jedis.ja ...

  2. <Redis> 入门四 Jedis操作Redis

    pom依赖 <dependencies> <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> < ...

  3. Jedis操作Redis

    Jedis操作Redis的常用封装方法 @Resource(name="jedispool") private JedisPool pool=null; /** * 设置缓存对象过 ...

  4. jedis操作redis的几种常见方式总结

    Redis是一个著名的key-value存储系统,也是nosql中的最常见的一种,这篇文章主要给大家总结了关于在java中jedis操作redis的几种常见方式,文中给出了详细的示例代码供大家参考学习 ...

  5. Java中Jedis操作Redis与Spring的整合

    Redis是一个key-value存储系统.它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和zset(有序集合).这些数据类型都支持push/pop. ...

  6. Redis入门和Java利用jedis操作redis

    Redis入门和Java利用jedis操作redis Redis介绍 Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库. Redis 与其他 key - val ...

  7. Jedis操作Redis数据库

    添加Maven依赖: <dependencies> <!-- 单元测试 --> <dependency> <groupId>junit</grou ...

  8. 四、Jedis操作Redis

    前言:  原来我们操作mysql需要用的jdbc,现在操作redis则需要jedis,jedis是客户端,而redis是服务器,使用jedis客户端来操作redis. 在这里要使用jedis操作red ...

  9. JAVA中通过Jedis操作Redis连接与插入简单库

    一.简述 JAVA中通过Jedis操作Redis连接与插入简单库 二.依赖 <!-- https://mvnrepository.com/artifact/redis.clients/jedis ...

  10. 第三百节,python操作redis缓存-其他常用操作,用于操作redis里的数据name,不论什么数据类型

    python操作redis缓存-其他常用操作,用于操作redis里的数据name,不论什么数据类型 delete(*names)根据删除redis中的任意数据类型 #!/usr/bin/env pyt ...

随机推荐

  1. hdu 4502 吉哥系列故事——临时工计划(dp)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=4502 思路:一个简单的dp ,比赛时没做出来呢..... d[i]代表 到第i天时的最大值 #includ ...

  2. poj3671

    首先容易想到的是LIS,但是n<=30000,所以肯定要优化: 壮哉单调队列又登场了: 然后再找一个最长不上升序列并求两者最大值即可,复杂度O(n logn); 应该说这是解题通法了,但再回头看 ...

  3. 【Pure】

    PureA set of small, responsive CSS modules that you can use in every web project.http://purecss.io/

  4. c语言中较常见的由内存分配引起的错误_内存越界_内存未初始化_内存太小_结构体隐含指针

    1.指针没有指向一块合法的内存 定义了指针变量,但是没有为指针分配内存,即指针没有指向一块合法的内浅显的例子就不举了,这里举几个比较隐蔽的例子. 1.1结构体成员指针未初始化 struct stude ...

  5. 巧用CSS文件愚人节恶搞(转)

    明天就是4月1日愚人节了,也就是那个可适度开玩笑.整蛊的日子了.如果你想和那些要上网的朋友或同事开个极客式玩笑,那就来试试这个国外网友Wes Bos分享的 CSS 文件吧. 一.打开浏览器的 Cust ...

  6. HDU 5603 the soldier of love 离线+树状数组

    这是bestcorder 67 div1 的1003 当时不会做 看了赛后官方题解,然后翻译了一下就过了,而且速度很快,膜拜官方题解.. 附上官方题解: the soldier of love 我们注 ...

  7. Notepad++中调用cl.exe编译器(Windows)

    Notepad++中调用cl.exe编译器(Windows) 近来在notepad++中写代码,写完后总是习惯性的想去VS里面编译一下,看看代码是否有误.但有时候一些零碎的小文件总是懒得再VS中打开, ...

  8. windows 下Python import 导入自定义模块

    周末在家研究这个东西,则找到解决方案. 费话少说,上代码 #定义一个自定义的函数,如下 #函数的名称必须是字母和数字的组合,不能用数字开头 #函数名后用小括号括住入参,可以用逗号分隔多个 #如果有返回 ...

  9. C语言基础--结构体对齐,位域,联合体

    结构体对齐 1--结构体对齐的原因与意义 许多计算机系统对基本数据类型的可允许地址做出了一些限制,要求某种类型的对象的地址必须是某个值K(通常是2,4,8)的倍数,而这个k则被称为该数据类型的对齐模数 ...

  10. 【暑假】[实用数据结构] AC自动机

    Aho-Corasick自动机  算法: <功能> AC自动机用于解决文本一个而模板有多个的问题. AC自动机可以成功将多模板匹配,匹配意味着算法可以找到每一个模板在文本中出现的位置. & ...