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 }

 

posted @ 2018-11-10 13:05  南岭寒  Views(852)  Comments(0Edit  收藏  举报