JAVA 连接 Redis 并进行操作

时间:2021-03-17 17:25:17

1, 这里以maven项目为例

     <!-- Redis NoSQL 操作依赖 --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency>

2, 会下载两个依赖包 

JAVA 连接 Redis 并进行操作

3, Redis 连接池帮助类

package redis; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; public class RedisUtil { // Redis 服务器 IP private String address = "192.168.3.118"; // Redis的端口号 private int port = 6379; // 访问密码 private String password = "920619"; // 连接 redis 等待时间 private int timeOut = 10000; // 可用连接实例的最大数目,默认值为8; // 如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽) private int maxTotal = 1024; // 控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8 private int maxIdle = 200; // 等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException private int maxWait = 10000; // 在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的 private boolean testOnBorrow = true; // 连接池 private JedisPool jedisPool = null; // 构造函数 public RedisUtil() { try { JedisPoolConfig config = new JedisPoolConfig(); config.setMaxTotal(maxTotal); config.setMaxIdle(maxIdle); config.setMaxWaitMillis(maxWait); config.setTestOnBorrow(testOnBorrow); jedisPool = new JedisPool(config, address, port, timeOut, password); } catch(Exception e) { e.printStackTrace(); } } // 获取 Jedis 实例 public Jedis getJedis() { if (jedisPool != null) { return jedisPool.getResource(); } return null; } }

 4, 测试类

package test; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.junit.Test; import redis.RedisUtil; import redis.clients.jedis.Jedis; public class RedisTest { private RedisUtil redisUtil = new RedisUtil(); // 字符串操作  @Test public void testStr() { Jedis jedis = redisUtil.getJedis(); jedis.set("id", "15"); // 只能是字符串 String id = jedis.get("id"); System.out.println(id); jedis.close(); } // 操作 map  @Test public void testMap() { Jedis jedis = redisUtil.getJedis(); Map<String, String> map = new HashMap<String, String>(); map.put("name", "xinxin"); map.put("age", "22"); map.put("qq", "123456"); jedis.hmset("user", map); List<String> rsmap = jedis.hmget("user", "name", "age", "qq"); System.out.println(rsmap); jedis.hdel("user", "age"); Iterator<String> iter = jedis.hkeys("user").iterator(); while (iter.hasNext()) { String key = iter.next(); System.out.println(key + ":" + jedis.hmget("user", key)); } jedis.close(); }   
// 操作 list @Test
public void testList() { Jedis jedis = redisUtil.getJedis(); jedis.del("java framework"); System.out.println(jedis.lrange("java framework", 0, -1)); jedis.lpush("java framework", "spring"); jedis.lpush("java framework", "struts"); jedis.lpush("java framework", "hibernate"); System.out.println(jedis.lrange("java framework", 0, -1)); jedis.del("java framework"); jedis.rpush("java framework", "spring"); jedis.rpush("java framework", "struts"); jedis.rpush("java framework", "hibernate"); System.out.println(jedis.lrange("java framework", 0, -1)); jedis.close(); } // 操作 set @Test public void testSet() { Jedis jedis = redisUtil.getJedis(); jedis.sadd("user1", "liuling"); jedis.sadd("user1", "xinxin"); jedis.sadd("user1", "ling"); jedis.sadd("user1", "zhangxinxin"); jedis.sadd("user1", "who"); jedis.srem("user1", "who"); // 移除noname System.out.println(jedis.smembers("user1"));// 获取所有加入的value System.out.println(jedis.sismember("user1", "who"));// 判断 who System.out.println(jedis.srandmember("user1")); // 是否是user集合的元素 System.out.println(jedis.scard("user1"));// 返回集合的元素个数 jedis.close(); } // jedis 排序 @Test public void testOrder() { Jedis jedis = redisUtil.getJedis(); jedis.del("a"); jedis.rpush("a", "1"); jedis.lpush("a", "6"); jedis.lpush("a", "3"); jedis.lpush("a", "9"); System.out.println(jedis.lrange("a", 0, -1)); System.out.println(jedis.sort("a")); System.out.println(jedis.lrange("a", 0, -1)); jedis.close(); } }