… …
请先学习 redis简单教学
jedis是Java用来操作redis数据库的工具
在使用jedis的时候记得打开redis的服务
数据的操作
/**
* *: del
* string: set, get, del, setex
* hashMap: hset, hget, hdel, hgetAlll
* list: lpush, rpush, lpop, rpop, lrange
* set: sadd, srem, smembers
* sortedSet: zadd, zrem, zrange
*/
- string类型的操作
// string类型的操作 @Test public void test1() { // redis默认端口为6379 // Jedis jedis = new Jedis(); // 空参默认为localhost和6379 Jedis jedis = new Jedis("127.0.0.1",6379); jedis.set("username","juln"); jedis.setex("activeCode",20,"xxxxxx"); // setex, 设置过期时间为20s jedis.del("username"); jedis.close(); }
- hashMap类型的操作
// hashMap类型的操作 @Test public void test2() { // redis默认端口为6379 // Jedis jedis = new Jedis(); // 空参默认为localhost和6379 Jedis jedis = new Jedis("127.0.0.1",6379); jedis.hset("user","name","juln"); String username = jedis.hget("user", "name"); Map<String, String> user = jedis.hgetAll("user"); for (String key: user.keySet()) { System.out.println(key+':'+user.get(key)); } jedis.hdel("user","name"); jedis.del("user"); jedis.close(); }
- list类型的操作
// list类型的操作 @Test public void test3() { // redis默认端口为6379 // Jedis jedis = new Jedis(); // 空参默认为localhost和6379 Jedis jedis = new Jedis("127.0.0.1",6379); jedis.lpush("numbers","3","2","1"); jedis.rpush("numbers","4","5","6"); List<String> numbers = jedis.lrange("numbers",0,-1); System.out.println(numbers); // [1,2,3,4,5,6] String i1 = jedis.lpop("numbers"); // 1 String i2 = jedis.rpop("numbers"); // 6 jedis.del("numbers"); jedis.close(); }
- set类型的操作
// set类型的操作 @Test public void test4() { // redis默认端口为6379 // Jedis jedis = new Jedis(); // 空参默认为localhost和6379 Jedis jedis = new Jedis("127.0.0.1",6379); jedis.sadd("language","java","python","js"); Set<String> language = jedis.smembers("language"); System.out.println(language); // [js,java,python] 无序 jedis.srem("language","java"); jedis.del("language"); jedis.close(); }
- sortedSet类型的操作
// sortedSet类型的操作 @Test public void test5() { // redis默认端口为6379 // Jedis jedis = new Jedis(); // 空参默认为localhost和6379 Jedis jedis = new Jedis("127.0.0.1",6379); jedis.zadd("language",80,"Java"); jedis.zadd("language",100,"JavaScript"); jedis.zadd("language",70,"Python"); Set<String> language = jedis.zrange("language",0,-1); System.out.println(language); // [Python,Java,JavaScript] 按分数从低到高排序 jedis.zrem("language","Python"); jedis.del("language"); jedis.close(); }
连接池 jedisPool
- 配置参数
/** * 配置参数 * maxTotal = 1000 最大活动对象数 * maxIdle = 100 最大能够保持idle状态(空闲状态)的对象数 * minIdle = 50 最小能够保持idle状态的对象数 * maxWaitMillis = 10000 当池内没有返回对象时,最大等待时间 * testOnBorrow = true 当调用borrow Object方法时,是否进行有效性检查 * testOnReturn = true 当调用return Object时,是否进行有效性检查 * timeBetweenEvictionRunsMillis = 30000 "空闲链接"检测线程,检测的周期,毫秒数. 如果为负数,表示不运行"检测线程". 默认为-1 * testWhileIdel = true 向调用者输出"链接"对象时,是否检测它的空闲超时 * numTestsPerEvictionRun = 50 对于"空闲链接"检测线程而言,每次检测的链接资源的个数. 默认为3 * ip = 127.0.0.1 redis服务器的ip * port = 6379 redis服务器的port */
- 代码
@Test public void test6() { // 1. 创建配置对象 JedisPoolConfig config = new JedisPoolConfig(); config.setMaxTotal(50); // 最大允许的连接数 config.setMaxIdle(10); // 最大的空闲连接 // 2. 创建Jedis连接池对象 JedisPool jedisPool = new JedisPool(config,"localhost",6379); // JedisPool jedisPool = new JedisPool(); // 也可以不手动配置,因为jedisPool有默认的配置 (如果使用redisPool默认的配置,第一步创建配置对象就可以省略) // 3. 获取连接 Jedis jedis = jedisPool.getResource(); // 4. 使用 jedis.setex("username",60,"juln"); // 5. 关闭, 归还连接池之前分配的资源 jedis.close(); }