redis在java客户端的操作
redis 高性能,速度快,效率高的特点,用来做缓存服务器是很不错的选择。(和 memcache 相似)
redis 在客户端的操作步骤:
1.redis 单机版操作
1.1 通过 Jedis 对象操作
(1)将安装 redis 服务的服务器的 ip 地址和 redis 的端口号作为构造参数传递给 Jedis,用来创建一个 Jedis 对象
Jedis jedis = new Jedis(ip,port);
(2)通过第一步创建的 jedis 对象,操作 redis 的 5 大数据类型(hash 类型,string 类型,list 类型,set 类型,zset 类型,有序)
jedis.set(string key,string value);
jedis.get(string key);
(3)操作完成后关闭 jedis 连接
jedis.close();
这种方法需要每次创建连接,关闭连接,比较浪费资源。因此使用下面的 jedisPool 连接池操作单机版 redis
直接上代码:
// 创建 jedis 对象 Jedis jedis = new Jedis("ip", 6379); // 操作 string 数据类型 jedis.set("username", "helloworld"); // 根据 key 取出对应的 value 值 String value = jedis.get("username"); // 值输出 System.out.println(value); // 关闭连接 jedis.close();
1.2 通过 jedisPool 操作 jedis
(1)创建 JedisPool 连接池
JedisPool pool = new JedisPool(ip,port);
(2) 通过连接池获得 jedis 对象
Jedis jedis = pool.getResource();
(3)获得 jedis 对象后,可以直接对 redis 数据类型进行操作
(4)操作完成后将 jedis 对象归还连接池,资源回收
(5)连接池不用的时候关闭
// 创建连接池 JedisPool pool = new JedisPool("ip 地址", 6379); // 获得连接对象 Jedis jedis = pool.getResource(); // 操作 hash 类型 Map<String, String> hash = new HashMap<>(); hash.put("name", "tom"); hash.put("age", "23"); hash.put("address", "长江路"); jedis.hmset("student", hash); Map<String, String> all = jedis.hgetAll("student"); Set<Entry<String, String>> entrySet = all.entrySet(); for (Entry<String, String> entry : entrySet) { String key = entry.getKey(); String value = entry.getValue(); System.out.println(key + ":" + value);}// 关闭连接, 连接池回收资源 jedis.close(); // 关闭连接池 pool.close();
2. 操作集群 redis-cluster
(1)创建集合列表,用来存放集群中的每一个 redis 实例
Set<HostAndPort> nodes = new Hash<HostAndPort>();
nodes.add(new HostAndPort(ip.port));
.. 以此类推,添加每一个 redis 实例
(2)第一步获得集合列表之后,创建 redis 集群实例对象
JedisCluster jedisCluster = new JedisCluster(nodes);// 需要将 redis 的节点列表作为作为构造参数传递,创建集群对象
(3)集群中的每一个 redis 对象是通过数据槽进行区分的(redis-3.0.0 中总共有 0--16384 个槽位),因此获得集群对象之后,可以对集群进行操作,每一个 redis 被访问的几率是相 00 的。
jedisCluster.set(String key,String value);
String value = jedisCluster.get(key);
(4) 在系统关闭之前,将 jedisCluster 对象关闭。
jedisCluster.close();
代码:
@Test public void testRedis_cluster() { // 创建 set 集合 Set<HostAndPort> nodes = new HashSet<>(); // 将每一个节点的 ip 地址和端口号添加到集合中 nodes.add(new HostAndPort("192.168.xx.xxx", port)); nodes.add(new HostAndPort("192.168.xx.xxx", port)); nodes.add(new HostAndPort("192.168.xx.xxx", port)); nodes.add(new HostAndPort("192.168.xx.xxx", port)); nodes.add(new HostAndPort("192.168.xx.xxx", port)); nodes.add(new HostAndPort("192.168.xx.xxx", port)); // 创建 jedisCluster 对象,需要将创建的 redis 集合列表作为参数传递 JedisCluster jedisCluster = new JedisCluster(nodes); // 通过集群对象操作 redis jedisCluster.set("address", "北京市长安街"); String value = jedisCluster.get("address"); // 打印结果 System.out.println(value); // 系统关闭前,关闭 jedisCluster 对象 jedisCluster.close();}