Redis入门Jedis

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介:

一、Windows版redis配置与启动

Redis官方并未提供windows版本,我们可以在github上下载windows版,https://github.com/MSOpenTech/redis/releases

下面是redis.windows.conf 

 

Java代码   收藏代码
  1. #是否作为守护进程运行  
  2. daemonize no  
  3. #Redis 默认监听端口  
  4. port 6479  
  5. #客户端闲置多少秒后,断开连接  
  6. timeout 300  
  7. #日志显示级别  
  8. loglevel verbose  
  9. #指定日志输出的文件名,也可指定到标准输出端口  
  10. logfile redis.log  
  11. #设置数据库的数量,默认最大是16,默认连接的数据库是0,可以通过select N 来连接不同的数据库  
  12. databases 32  
  13. #Dump持久化策略  
  14. #当有一条Keys 数据被改变是,900 秒刷新到disk 一次  
  15. #save 900 1  
  16. #当有10 条Keys 数据被改变时,300 秒刷新到disk 一次  
  17. save 300 100  
  18. #当有1w 条keys 数据被改变时,60 秒刷新到disk 一次  
  19. save 6000 10000  
  20. #当dump     .rdb 数据库的时候是否压缩数据对象  
  21. rdbcompression yes  
  22. #dump 持久化数据保存的文件名  
  23. dbfilename dump.rdb  
  24. ###########    Replication #####################  
  25. #Redis的主从配置,配置slaveof则实例作为从服务器  
  26. #slaveof 192.168.0.105 6379  
  27. #主服务器连接密码  
  28. # masterauth <master-password>  
  29. ############## 安全性 ###########  
  30. #设置连接密码  
  31. requirepass admin  
  32. ############### LIMITS ##############  
  33. #最大客户端连接数  
  34. # maxclients 128  
  35. #最大内存使用率  
  36. # maxmemory <bytes>  
  37. ########## APPEND ONLY MODE #########  
  38. #是否开启日志功能  
  39. appendonly no  
  40. # AOF持久化策略  
  41. #appendfsync always  
  42. #appendfsync everysec  
  43. #appendfsync no  
  44. ################ VIRTUAL MEMORY ###########  
  45. #是否开启VM 功能  
  46. #vm-enabled no  
  47. # vm-enabled yes  
  48. #vm-swap-file logs/redis.swap  
  49. #vm-max-memory 0  
  50. #vm-page-size 32  
  51. #vm-pages 134217728  
  52. #vm-max-threads 4  

 

 二、Jedis

Jedis是Redis的Java客户端,提供了java对于redis的常用操作。

Xml代码   收藏代码
  1. <dependency>  
  2.     <groupId>redis.clients</groupId>  
  3.     <artifactId>jedis</artifactId>  
  4.     <version>2.8.0</version>  
  5. </dependency>  

 

 

Java代码   收藏代码
  1. import redis.clients.jedis.Jedis;  
  2.   
  3. import java.util.*;  
  4.   
  5. /** 
  6.  * Created by shenhongxi on 2016/1/21. 
  7.  */  
  8. public class RedisTest {  
  9.   
  10.     public static void main(String[] args) {  
  11.         Jedis jedis = new Jedis("127.0.0.1"6479);  
  12.         jedis.auth("admin"); // password  
  13.         String key = "t";  
  14.         jedis.set(key, "javared");  
  15.         System.out.println(jedis.get(key));  
  16.         jedis.append(key, "&wely");  
  17.         System.out.println(jedis.get(key));  
  18.         jedis.del(key);  
  19.         System.out.println(jedis.get(key));  
  20.   
  21.         Jedis jedis2 = new Jedis("127.0.0.1"6379);  
  22.         jedis2.auth("admin");  
  23.         jedis2.set(key, "wely.com");  
  24.         System.out.println(jedis2.get(key));  
  25.   
  26.         // 批量插入  
  27.         jedis.mset("name""hongxi""age""23""qq""1037256085");  
  28.         jedis.incr("age");  
  29.         System.out.println(jedis.get("name") + "_" + jedis.get("age") + "_" + jedis.get("qq"));  
  30.   
  31.         // map  
  32.         Map<String, String> user = new HashMap<String, String>();  
  33.         user.put("name""hongxi");  
  34.         user.put("age""23");  
  35.         user.put("qq""1037256085");  
  36.         String hmKey = "user";  
  37.         jedis.hmset(hmKey, user);  
  38.         List<String> list = jedis.hmget(hmKey, "name""age""qq");  
  39.         System.out.println(list);  
  40.         jedis.hdel(hmKey, "name");  
  41.         list = jedis.hmget(hmKey, "name""age""qq");  
  42.         System.out.println(list);  
  43.         System.out.println(jedis.hlen(hmKey));  
  44.         System.out.println(jedis.exists(hmKey));  
  45.         System.out.println(jedis.hkeys(hmKey));  
  46.         System.out.println(jedis.hvals(hmKey));  
  47.         Iterator<String> iter=jedis.hkeys("user").iterator();  
  48.         while (iter.hasNext()){  
  49.             String _key = iter.next();  
  50.             System.out.println(_key + ":" + jedis.hmget("user", _key));  
  51.         }  
  52.   
  53.         // list  
  54.         String listKey = "Java Framework";  
  55.         jedis.del(listKey);  
  56.         System.out.println(jedis.lrange(listKey, 0, -1));  
  57.         jedis.lpush(listKey, "spring");  
  58.         jedis.lpush(listKey, "restEasy");  
  59.         jedis.lpush(listKey, "mybatis");  
  60.         System.out.println(jedis.lrange(listKey, 0, -1));  
  61.         jedis.del(listKey);  
  62.         jedis.rpush(listKey, "spring");  
  63.         jedis.rpush(listKey, "restEasy");  
  64.         jedis.rpush(listKey, "mybatis");  
  65.         System.out.println(jedis.lrange(listKey, 0, -1));  
  66.   
  67.         // set  
  68.         String setKey = "lang";  
  69.         Long size = jedis.sadd(setKey, "hongxi""wely""norip");  
  70.         System.out.println(size);  
  71.         jedis.srem(setKey, "norip");  
  72.         Set<String> set = jedis.smembers(setKey);  
  73.         System.out.println(set);  
  74.         System.out.println(jedis.sismember(setKey, "hongxi"));  
  75.         System.out.println(jedis.srandmember(setKey));  
  76.         System.out.println(jedis.scard(setKey));  
  77.   
  78.         // 排序  
  79.         jedis.del("a");  
  80.         jedis.rpush("a""1");  
  81.         jedis.lpush("a","6");  
  82.         jedis.lpush("a""3");  
  83.         jedis.lpush("a""9");  
  84.         System.out.println(jedis.lrange("a"0, -1)); // [9, 3, 6, 1]  
  85.         System.out.println(jedis.sort("a")); // [1, 3, 6, 9]  
  86.         System.out.println(jedis.lrange("a",0,-1)); // [9, 3, 6, 1]  
  87.     }  
  88. }  

 

三、JedisPool

    Jedis“连接池”在通常情况下可以有效的提高应用的通信能力,并且这是一种良好的设计模式。Jedis的连接池设计基于apache commons-pool原生库,仅作了简单的封装。连接池基本参数说明这里不加赘述,下面讲述JedisPool编程设计。

Java代码   收藏代码
  1. public class PoolTestMain {  
  2.     public static void main(String[] args) {  
  3.         JedisPoolConfig config = new JedisPoolConfig();  
  4.         config.setMaxActive(32);  
  5.         config.setMaxIdle(6);  
  6.         config.setMinIdle(0);  
  7.         config.setMaxWait(15000);  
  8.         config.setMinEvictableIdleTimeMillis(300000);  
  9.         config.setSoftMinEvictableIdleTimeMillis(-1);  
  10.         config.setNumTestsPerEvictionRun(3);  
  11.         config.setTestOnBorrow(false);  
  12.         config.setTestOnReturn(false);  
  13.         config.setTestWhileIdle(false);  
  14.         config.setTimeBetweenEvictionRunsMillis(60000);//一分钟  
  15.         config.setWhenExhaustedAction((byte)1);  
  16.         JedisPool pool = new JedisPool(config,"127.0.0.1",6379,15000,"0123456",12);  
  17.         Jedis client = pool.getResource();//从pool中获取资源  
  18.         try{  
  19.             client.select(0);  
  20.             client.set("k1""v1");  
  21.             System.out.println(client.get("k1"));  
  22.         }catch(Exception e){  
  23.                         pool.returnBrokenResource(client);  
  24.             e.printStackTrace();  
  25.         }finally{  
  26.             pool.returnResource(client);//向连接池“归还”资源,千万不要忘记。  
  27.         }  
  28.   
  29.     }  
  30.   
  31. }  

 spring配置JedisPool:

Xml代码   收藏代码
  1. <beans xmlns="http://www.springframework.org/schema/beans"   
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd" default-autowire="byName">  
  4.   
  5.     <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">  
  6.         <property name="maxActive" value="32"></property>  
  7.         <property name="maxIdle" value="6"></property>  
  8.         <property name="maxWait" value="15000"></property>  
  9.         <property name="minEvictableIdleTimeMillis" value="300000"></property>  
  10.         <property name="numTestsPerEvictionRun" value="3"></property>  
  11.         <property name="timeBetweenEvictionRunsMillis" value="60000"></property>  
  12.         <property name="whenExhaustedAction" value="1"></property>  
  13.     </bean>  
  14.     <bean id="jedisPool" class="redis.clients.jedis.JedisPool" destroy-method="destroy">  
  15.         <!-- config -->  
  16.         <constructor-arg ref="jedisPoolConfig"></constructor-arg>  
  17.         <!-- host -->  
  18.         <constructor-arg value="127.0.0.1"></constructor-arg>  
  19.         <!-- port -->  
  20.         <constructor-arg value="6379"></constructor-arg>  
  21.         <!-- timeout -->  
  22.         <constructor-arg value="15000"></constructor-arg>  
  23.         <!-- password -->  
  24.         <constructor-arg value="0123456"></constructor-arg>  
  25.         <!-- database index -->  
  26.         <constructor-arg value="12"></constructor-arg>        
  27.     </bean>  
  28. </beans>  

     上述代码,事实上存在设计上尚有改进之处,spring-data中对redis的支持,在编程级别更加轻便。



原文链接:[http://wely.iteye.com/blog/2272560]

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2月前
|
缓存 NoSQL Java
springboot的缓存和redis缓存,入门级别教程
本文介绍了Spring Boot中的缓存机制,包括使用默认的JVM缓存和集成Redis缓存,以及如何配置和使用缓存来提高应用程序性能。
127 1
springboot的缓存和redis缓存,入门级别教程
|
3月前
|
JSON NoSQL Java
redis的java客户端的使用(Jedis、SpringDataRedis、SpringBoot整合redis、redisTemplate序列化及stringRedisTemplate序列化)
这篇文章介绍了在Java中使用Redis客户端的几种方法,包括Jedis、SpringDataRedis和SpringBoot整合Redis的操作。文章详细解释了Jedis的基本使用步骤,Jedis连接池的创建和使用,以及在SpringBoot项目中如何配置和使用RedisTemplate和StringRedisTemplate。此外,还探讨了RedisTemplate序列化的两种实践方案,包括默认的JDK序列化和自定义的JSON序列化,以及StringRedisTemplate的使用,它要求键和值都必须是String类型。
redis的java客户端的使用(Jedis、SpringDataRedis、SpringBoot整合redis、redisTemplate序列化及stringRedisTemplate序列化)
|
2月前
|
存储 消息中间件 NoSQL
Redis 入门 - C#.NET Core客户端库六种选择
Redis 入门 - C#.NET Core客户端库六种选择
69 8
|
3月前
|
NoSQL 网络协议 Java
[Redis] 渐进式遍历+使用jedis操作Redis+使用Spring操作Redis
[Redis] 渐进式遍历+使用jedis操作Redis+使用Spring操作Redis
53 7
|
4月前
|
SQL 存储 NoSQL
Redis6入门到实战------ 一、NoSQL数据库简介
这篇文章是关于NoSQL数据库的简介,讨论了技术发展、NoSQL数据库的概念、适用场景、不适用场景,以及常见的非关系型数据库。文章还提到了Web1.0到Web2.0时代的技术演进,以及解决CPU、内存和IO压力的方法,并对比了行式存储和列式存储数据库的特点。
Redis6入门到实战------ 一、NoSQL数据库简介
|
3月前
|
NoSQL Java 网络安全
[Redis] 渐进式遍历+使用jedis操作Redis+使用Spring操作Redis
[Redis] 渐进式遍历+使用jedis操作Redis+使用Spring操作Redis
|
4月前
|
NoSQL 算法 安全
Redis6入门到实战------ 四、Redis配置文件介绍
这篇文章详细介绍了Redis配置文件中的各种设置,包括单位定义、包含配置、网络配置、守护进程设置、日志记录、密码安全、客户端连接限制以及内存使用策略等。
Redis6入门到实战------ 四、Redis配置文件介绍
|
4月前
|
NoSQL Redis 数据安全/隐私保护
Redis6入门到实战------ 二、Redis安装
这篇文章详细介绍了Redis 6的安装过程,包括下载、解压、编译、安装、配置以及启动Redis服务器的步骤。还涵盖了如何设置Redis以在后台运行,如何为Redis设置密码保护,以及如何配置Redis服务以实现开机自启动。
Redis6入门到实战------ 二、Redis安装
|
4月前
|
NoSQL Java Redis
Redis6入门到实战------思维导图+章节目录
这篇文章提供了Redis 6从入门到实战的全面学习资料,包括思维导图和各章节目录,涵盖了NoSQL数据库、Redis安装配置、数据类型、事务、持久化、主从复制、集群等核心知识点。
Redis6入门到实战------思维导图+章节目录
|
4月前
|
NoSQL 安全 Java
Redis6入门到实战------ 三、常用五大数据类型(字符串 String)
这篇文章深入探讨了Redis中的String数据类型,包括键操作的命令、String类型的命令使用,以及String在Redis中的内部数据结构实现。
Redis6入门到实战------ 三、常用五大数据类型(字符串 String)
下一篇
DataWorks