天天看點

redis 初步了解

1.連接配接redis 通過java操作

1.首先 導入redis驅動

<dependency>
      <groupId>redis.clients</groupId>
      <artifactId>jedis</artifactId>
        <version>2.9.0</version>
    </dependency>
           

2.連接配接redis通過jedis

redis 初步了解

2.建立redis連接配接池

連接配接redis通過 jedis 相當于HTTPclient

1.建立單例模式的方法 在調用的時候被建立

2.建立私有靜态 jedisPool

3. 建立私有類 建立靜态代碼塊 放入連接配接池的基本配置

4.有 最大連接配接數 最大空閑書 最小空閑連接配接數

5. 建立連接配接redis對象jedis

6.建立一個向外提供 從連接配接池拿值得方法

7.再建立一個向外提供使用完連接配接 歸還連接配接的方法

8.建立工具類 将set hash 進行方法封裝 歸還連接配接

代碼

public class RedisPool {
    //建立jedis   使用單例模式  JedisPool的配置參數大部分是由JedisPoolConfig的對應項來指派的。
    private  static JedisPool jedisPool;

     private RedisPool(){}


    static {

         //連接配接池基本配置  JedisPoolConfig  是為了緩存連接配接,減少建立連接配接的次數
         JedisPoolConfig poolConfig =new JedisPoolConfig();
            poolConfig.setMaxTotal(100);//最大連接配接數
            poolConfig.setMaxIdle(10);//最大空閑數
         poolConfig.setMinIdle(5);//最小空閑連接配接數
         //建立連接配接池對象
           jedisPool= new JedisPool(poolConfig,"192.168.110.129",6379);

     }
//向外提供一個jedis連接配接  靜态代碼塊  jedis是用戶端
     public static  Jedis getJedis(){
         Jedis resource = jedisPool.getResource();//從連接配接池中拿出
         return resource;
     }
//向外提供歸還連接配接池連接配接的方法
    public static void returnJedis(Jedis jedis){
          if(jedis!=null){
  jedis.close();
          }
    }
}
           
public class RedisUtils {
//提供方法
    public static void set(String key ,String value){
        Jedis jedis =RedisPool.getJedis();
        jedis.set(key, value);
        RedisPool.returnJedis(jedis);

    }
    public static  void hset(String key,String filed,String value){
        Jedis jedis =RedisPool.getJedis();
        jedis.hset(key, filed,value);
        RedisPool.returnJedis(jedis);
    }

}
           

3.redis 放值,取值 類型轉換

@Test
    public void test4() {
       User user = new User();
       user.setUserId("1");
       user.setJob("jfdjk");
       user.getPhone(125555555);
       //擷取redis的用戶端
   Jedis jedis = RedisPool.getJedis();
   //轉為json格式  再轉為String格式
        String  t = JSONObject.toJSONString(user);
        jedis.set("user1",t);
        RedisPool.returnJedis(jedis);
        System.out.println("資料儲存成功");
    }
    @Test    //存的話最後都是要轉化為存儲相對應的類型
    public void test5() {
        User user = new User();
        user.setUserId("1");
        user.setJob("jfdjk");
        user.getPhone(125555555);
        //擷取redis的用戶端
        Jedis jedis = RedisPool.getJedis();
        //轉為json格式  再轉為String格式
        String  t = JSONObject.toJSONString(user);
        jedis.set("user1",t);
        RedisPool.returnJedis(jedis);
        System.out.println("資料儲存成功");
    }

    @Test    //存的話最後後都是要轉化為存儲相對應的類型   取,步驟相反
    public void test6() {
        User user = new User();
        user.setUserId("1");
        user.setJob("jfdjk");
        user.setPhone("7412589632148652145");
        //擷取redis的用戶端
        Jedis jedis = RedisPool.getJedis();
        //轉為json格式  再轉為String格式
        String  t = JSONObject.toJSONString(user);
        jedis.set("user1",t);
        RedisPool.returnJedis(jedis);
        System.out.println("資料儲存成功");
        //取資料   為string類型的json資料字元串
             String userString =  jedis.get("user1");
             //先将json字元串 轉為 json對象
        JSONObject jsonObject = JSONObject.parseObject(userString);
        //再将裝換的jsonObject轉為  javaObject
        User user1=jsonObject.toJavaObject(jsonObject,user.getClass());
        System.out.println(user1.getJob());
        RedisPool.returnJedis(jedis);

    }
    @Test    //存的話最後都是要轉化為存儲相對應的類型
    public void test7() {

        Jedis jedis = RedisPool.getJedis();
      List<User> list =new ArrayList<>() ;
   for(int i=0;i<100;i++){
       User  u= new User();
       u.setUserId(Integer.toString(i));
       u.setRealName("zhuzhu"+i);
       u.setSex(i%2);
       list.add(u);
   }
        String s = JSONArray.toJSONString(list);
   jedis.set("user",s);
 RedisPool.returnJedis(jedis);
   System.out.println("chenggong");
//首先取出
        String user = jedis.get("user");
        //将sTRING裝換json對象
        List<User> strings = JSONObject.parseArray(user, User.class);
        for (int j=0;j<strings.size();j++){
            System.out.println(strings.get(j).getSex());
        }

    }