java代码操作Redis数据库
2017-07-26 19:41
831 查看
Redis 是一个基于内存高性能的key-value数据库。
先学习用命令操作Redis数据,再来写java代码操作,先用命令的方式做下,然后使用该Redis 提供api方式操作一下会更能容易理解。
学习地址:
【1】http://www.yiibai.com/redis/redis_quick_guide.html
【2】http://www.redis.cn/(Redis官方中文站)
【3】 http://www.runoob.com/redis/redis-tutorial.html
所需jar包:
commons-pool-2.4.2.jar(因为我这里使用了连接池)
jedis-2.9.0.jar(操作Redis数据库所需jar包。)
junit-4.12.jar(我这里使用了单元测试,所以添加了这个jar包)
我这里用了Maven
在POM.xml配置里面添加依赖jar包配置:
【1】工具类:
【2】测试类
先学习用命令操作Redis数据,再来写java代码操作,先用命令的方式做下,然后使用该Redis 提供api方式操作一下会更能容易理解。
学习地址:
【1】http://www.yiibai.com/redis/redis_quick_guide.html
【2】http://www.redis.cn/(Redis官方中文站)
【3】 http://www.runoob.com/redis/redis-tutorial.html
所需jar包:
commons-pool-2.4.2.jar(因为我这里使用了连接池)
jedis-2.9.0.jar(操作Redis数据库所需jar包。)
junit-4.12.jar(我这里使用了单元测试,所以添加了这个jar包)
我这里用了Maven
在POM.xml配置里面添加依赖jar包配置:
<dependencies> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> <version>2.4.2</version> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> </dependencies>
【1】工具类:
package com.cjh.redis.utils; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; /** * Created by 陈嘉豪 on 2017/7/26. */ public class RedisUtils { private static String HOST="127.0.0.1"; private static int PORT=6379; private static int TIMEOUT=10000; private static String PASSWORD="chenjiahao"; //连接耗尽时是否阻塞,false报异常,true阻塞直到超时(默认) private static boolean isBlock=true; private static JedisPool jedisPool =null; static{ //使用连接池 //【2】创建JedisPool所需的连接池配置 JedisPoolConfig poolConfig = new JedisPoolConfig(); //最大连接数,默认8 poolConfig.setMaxTotal(1024); //最大空闲数,默认8 poolConfig.setMaxIdle(200); //最小空闲连接数,默认0 poolConfig.setMinIdle(0); //对象最小空闲时间,默认1800000毫秒(30分钟) poolConfig.setMinEvictableIdleTimeMillis(1800000); //获取连接的最大等待毫秒数。如果设为小于0,则永远等待 poolConfig.setMaxWaitMillis(-1); //在创建对象时检测对象是否有效,true是,默认值是false poolConfig.setTestOnCreate(true); //从对象池获取对象时检测对象是否有效,默认false poolConfig.setTestOnBorrow(true); //在向对象池中归还对象时是否检测对象有效,true是,默认值是false poolConfig.setTestOnReturn(false); //在检测空闲对象线程检测到对象不需要移除时,是否检测对象的有效性。true是,默认值是false poolConfig.setTestWhileIdle(false); //检测空闲对象线程每次检测的空闲对象的数量。默认值是3;如果这个值小于0,则每次检测的空闲对象数量等于当前空闲对象数量除以这个值的绝对值,并对结果向上取整 poolConfig.setNumTestsPerEvictionRun(3); //是否启用后进先出, 默认true poolConfig.setLifo(true); //多长时候执行一次空闲对象检测。单位是毫秒数。如果小于等于0,则不执行检测线程。默认值是-1 poolConfig.setTimeBetweenEvictionRunsMillis(-1); //当对象池没有空闲对象时,新的获取对象的请求是否阻塞。true阻塞。默认值是true; poolConfig.setBlockWhenExhausted(true); ///是否启用pool的jmx管理功能, 默认true poolConfig.setJmxEnabled(true); //【1】创建JedisPool连接池 jedisPool = new JedisPool(poolConfig, HOST, PORT, TIMEOUT, PASSWORD); } /** * 同步获取Jedis * @return */ public synchronized static Jedis getJedis(){ if(jedisPool!=null){ //获取Jedis对象 Jedis jedis = jedisPool.getResource(); return jedis; } return null; } /** * 释放jedis资源 */ public static void releaseResource(Jedis jedis){ if( jedis !=null ){ jedisPool.returnResource(jedis); } } }
【2】测试类
package com.cjh.redis.test; import com.cjh.redis.utils.RedisUtils; import org.junit.Before; import org.junit.Test; import redis.clients.jedis.Jedis; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; public class RedisTest { private Jedis jedis; public static void main(String[] args){ } /** * 连接redis服务 */ @Test public void connectionRedis(){ //连接本地的Redis服务 Jedis jedis = new Je b1a8 dis("127.0.0.1",6379); //如果有密码,则需要下面权限认证 jedis.auth("chenjiahao"); System.out.println("连接成功!"); //查看服务是否运行 System.out.println("服务正在运行:"+jedis.ping()); } @Before public void getJedis(){ jedis = RedisUtils.getJedis(); } /** * 测试Redis存储String */ @Test public void testString(){ jedis.set("name","爱华"); System.out.println(jedis.get("name")); jedis.append("name",",嘉豪"); System.out.print(jedis.get("name")); //存储多个键值 jedis.mset("name","爱华","age","20"); jedis.incr("age"); System.out.println(jedis.get("name")+","+jedis.get("age")); jedis.del("name","age"); System.out.println(jedis.get("name")+","+jedis.get("age")); } /** * 测试redis存储List */ @Test public void testList(){ jedis.del("lists"); //在头部添加 jedis.lpush("lists","o1","o2"); //第一个是key,第二个参数是起始位置,第三个是结束位置,-1表示全部输出 System.out.println(jedis.lrange("lists",0,-1)); jedis.del("lists"); //在尾部后添加 jedis.rpush("lists","o1","o2"); System.out.println(jedis.lrange("lists",0,-1)); } /** * 测试Redis存储Set */ @Test public void testSet_(){ jedis.sadd("users","爱华"); jedis.sadd("users","嘉豪"); //全部输出set集合中的元素 System.out.println(jedis.smembers("users")); //判断是否是set集合中的元素 System.out.println(jedis.sismember("users","嘉豪")); //获取set集合中元素的总数目 System.out.println(jedis.scard("users")); //随机获取set集合中的元素 System.out.println(jedis.srandmember("users")); jedis.del("users"); } /** * 测试Redis存储Map(Hash) */ @Test public void testMap(){ Map<String,String> map = new HashMap<>(); map.put("name","嘉豪"); map.put("name2","爱华"); jedis.hmset("person",map); Iterator<String> iterator = jedis.hkeys("person").iterator(); while( iterator.hasNext() ){ System.out.println(jedis.hmget("person",iterator.next())); } jedis.del("person"); } /** * 测试List排序 */ @Test public void testListSort(){ this.jedis.del("array"); this.jedis.rpush("array","88"); this.jedis.rpush("array","56"); this.jedis.rpush("array","1"); this.jedis.rpush("array","2"); System.out.println(this.jedis.lrange("array",0,-1)); this.jedis.sort("array"); System.out.println(this.jedis.lrange("array",0,-1)); this.jedis.del("array"); } }
最后测试的时候,首先开启Redis服务端,再进行测试。Redis的密码也要注意,简单的操作就到这里了。
相关文章推荐
- 数据库操作:java连接ORACLE实例代码演示
- 常用代码备忘录(封装 Apache Commons 的 DbUtils 实现的数据库操作工具类)-DBUtil.java
- 使用监听器实现JAVA代码对数据库的定时操作,求大神帮帮忙!!!
- JAVA:对数据库的一系列操作代码
- 完整全面的Java资源库(包括构建、操作、代码分析、编译器、数据库、社区等等)
- 数据库操作:java连接DB2实例代码演示
- 数据库操作:java连接MSSQL实例代码演示
- java操作redis数据库
- [Java代码] Java操作Redis
- mybatis操作数据库是如果mapper文件中的id和java代码中的参数名字不同是报的错
- java操作redis数据库实例(redis集群)
- java代码获取数据库连接并操作数据库用户
- 完整全面的Java资源库(包括构建、操作、代码分析、编译器、数据库、社区等等)
- 完整全面的Java资源库(包括构建、操作、代码分析、编译器、数据库、社区等等)
- JAVA:对数据库的一系列操作代码
- MongoDB学习日记 - java代码(三):数据库与集合操作
- 数据库操作:java连接MSSQL实例代码演示
- 完整全面的Java资源库(包括构建、操作、代码分析、编译器、数据库、社区等等)
- 数据库操作:java连接MYSQL实例代码演示
- java如何操作非关系型数据库redis(-)