天天看点

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());
        }

    }