zoukankan      html  css  js  c++  java
  • 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();
        }
  • 相关阅读:
    Windows PE导出表编程3(暴力覆盖导出函数)
    Windows PE导出表编程3(暴力覆盖导出函数)
    Windows PE导出表编程2(重组导出表函数地址)
    Windows PE导出表编程2(重组导出表函数地址)
    Windows核心编程 第二十章 DLL的高级操作技术
    Windows核心编程 第二十章 DLL的高级操作技术
    Windows核心编程 第十九章 DLL基础
    CodeForces A. Points in Segments
    PAT 甲级 1031 Hello World for U
    PAT L1-006 连续因子
  • 原文地址:https://www.cnblogs.com/shuai-server/p/8922579.html
Copyright © 2011-2022 走看看