• Jedis连接redis客户端


    1 单点的redis利用jedis客户端连接

      如何连接

    1 //1 利用jedis连接对象操作redis
    2     @Test
    3     public void test01(){
    4         //构造一个具有连接信息的jedis对象
    5         //确定虚拟机linux系统的端口是开放的? 防火墙
    6         Jedis jedis=new Jedis("192.168.60.131", 6379);
    7         jedis.set("name", "hanlaoshi");
    8         jedis.expire("name", 60);
    9 }

      模拟缓存逻辑在系统中执行步骤

     1 //2 利用打桩语句,模拟缓存的使用和数据库的调用
     2     @Test
     3     public void test02(){
     4         //查询商品为例,id=1的一个商品
     5         String id="1";
     6         System.out.println("用户访问http://www.jt.com/product/"+id);
     7     //1 利用用户请求参数,生成当前业务逻辑的唯一key值 exists
     8     //企业中的key值一般都是前缀,后缀 拼接id完成的
     9         String key="product_"+id;
    10         Jedis jedis=new Jedis("192.168.60.131", 6379);
    11         if(jedis.exists(key)){//有的话返回true,没有返回false
    12             //如果有数据,需要从redis中获取value,打印返回
    13             String value=jedis.get(key);
    14             System.out.println("从缓存获取value:"+value);
    15         }else{//缓存没有数据
    16             System.out.println("缓存无数据,数据从数据库获取");
    17             //假设从数据库获取的数据
    18             String value="id=1&productName=haha";
    19             System.out.println("数据获取,value:"+value);
    20             //返回之前,存在redis,供后续使用
    21             jedis.set(key, value);
    22             System.out.println("数据跟随响应返回");
    23         }
    24     }

      hash取余的数据分片计算逻辑

            key值是一个取值范围非常大的内存值;
            hash取余公式 (key.hashCode()&Integer.MAX_VALUE)%N
            N是数据分片节点的数量(3) [0,1,2] 取值结果=0的存储到6379=1的存储到6380,=2存储到6381

     1  1     @Test
     2  2         public void test04(){
     3  3             Jedis jedis1=new Jedis("192.168.60.131", 6379);
     4  4             Jedis jedis2=new Jedis("192.168.60.131", 6380);
     5  5             Jedis jedis3=new Jedis("192.168.60.131", 6381);
     6  6             for(int i=0;i<5000;i++){
     7  7                 String key="product_"+i;
     8  8                 String value="value_"+i;
     9  9                 //计算取余结果,同一个key总会得到一个相同的取余结果
    10 10                 int result=(key.hashCode()&Integer.MAX_VALUE)%3;
    11 11                 if(result==0){jedis1.set(key, value);}
    12 12                 if(result==1){jedis2.set(key, value);}
    13 13                 if(result==2){jedis3.set(key, value);}
    14 14             }
    15 15 }
  • 相关阅读:
    Head First Html与CSS 第四章
    Hadoop——第六章 : 分布式文件系统HDFS
    Hadoop——主从结构的单点故障问题及解决方案
    Hadoop——HBase的体系结构简介
    Architecture of a Database System论文——第二章:进程模型
    Architecture of a Database System论文——第一章:概述
    大数据学习路线
    XAMPP中Mysql无法启动解决方法
    Head First Html与CSS 第三章Web网页建设
    《趣学算法》动态规划 大卖场购物车1——01背包问题
  • 原文地址:https://www.cnblogs.com/nanlinghan/p/9939076.html
Copyright © 2020-2023  润新知