Jedis: 一款java操作redis数据库的工具.

使用步骤

  • 下载jedis的jar包
  • 使用
    1. //1. 获取连接
    2. Jedis jedis = new Jedis("localhost",6379);
    3. //2. 操作
    4. jedis.set("username","zhangsan");
    5. //3. 关闭连接
    6. jedis.close();

    Jedis操作各种redis中的数据结构

  1. 字符串类型 string
  • set
  • get ```java

//1. 获取连接 Jedis jedis = new Jedis();//如果使用空参构造,默认值 “localhost”,6379端口 //2. 操作 //存储 jedis.set(“username”,”zhangsan”); //获取 String username = jedis.get(“username”); System.out.println(username);

//可以使用setex()方法存储可以指定过期时间的 key value jedis.setex(“activecode”,20,”hehe”);//将activecode:hehe键值对存入redis,并且20秒后自动删除该键值对

//3. 关闭连接 jedis.close();

  1. 2. 哈希类型 hash map格式
  2. - hset
  3. - hget
  4. - hgetAll
  5. ```java
  6. //1. 获取连接
  7. Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口
  8. //2. 操作
  9. // 存储hash
  10. jedis.hset("user","name","lisi");
  11. jedis.hset("user","age","23");
  12. jedis.hset("user","gender","female");
  13. // 获取hash
  14. String name = jedis.hget("user", "name");
  15. System.out.println(name);
  16. // 获取hash的所有map中的数据
  17. Map<String, String> user = jedis.hgetAll("user");
  18. // keyset
  19. Set<String> keySet = user.keySet();
  20. for (String key : keySet) {
  21. //获取value
  22. String value = user.get(key);
  23. System.out.println(key + ":" + value);
  24. }
  25. //3. 关闭连接
  26. jedis.close();
  1. 列表类型 list : linkedlist格式。支持重复元素
  • lpush / rpush
  • lpop / rpop
  • lrange start end : 范围获取 ```java //1. 获取连接 Jedis jedis = new Jedis();//如果使用空参构造,默认值 “localhost”,6379端口 //2. 操作 // list 存储 jedis.lpush(“mylist”,”a”,”b”,”c”);//从左边存 jedis.rpush(“mylist”,”a”,”b”,”c”);//从右边存

// list 范围获取 List mylist = jedis.lrange(“mylist”, 0, -1); System.out.println(mylist);

// list 弹出 String element1 = jedis.lpop(“mylist”);//c System.out.println(element1);

String element2 = jedis.rpop(“mylist”);//c System.out.println(element2);

// list 范围获取 List mylist2 = jedis.lrange(“mylist”, 0, -1); System.out.println(mylist2);

//3. 关闭连接 jedis.close();

  1. 4. 集合类型 set 不允许重复元素
  2. - sadd
  3. - smembers:获取所有元素
  4. ```java
  5. //1. 获取连接
  6. Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口
  7. //2. 操作
  8. // set 存储
  9. jedis.sadd("myset","java","php","c++");
  10. // set 获取
  11. Set<String> myset = jedis.smembers("myset");
  12. System.out.println(myset);
  13. //3. 关闭连接
  14. jedis.close();
  1. <br />5. 有序集合类型 sortedset:不允许重复元素,且元素有顺序
  • zadd
  • zrange ```java //1. 获取连接 Jedis jedis = new Jedis();//如果使用空参构造,默认值 “localhost”,6379端口 //2. 操作 // sortedset 存储 jedis.zadd(“mysortedset”,3,”亚瑟”); jedis.zadd(“mysortedset”,30,”后裔”); jedis.zadd(“mysortedset”,55,”孙悟空”);

// sortedset 获取 Set mysortedset = jedis.zrange(“mysortedset”, 0, -1);

System.out.println(mysortedset); //3. 关闭连接 jedis.close();

  1. 6. jedis连接池: JedisPool
  2. 使用:
  3. - 创建JedisPool连接池对象
  4. - 调用方法 getResource()方法获取Jedis连接
  5. ```java
  6. //0.创建一个配置对象
  7. JedisPoolConfig config = new JedisPoolConfig();
  8. config.setMaxTotal(50);
  9. config.setMaxIdle(10);
  10. //1.创建Jedis连接池对象
  11. JedisPool jedisPool = new JedisPool(config,"localhost",6379);
  12. //2.获取连接
  13. Jedis jedis = jedisPool.getResource();
  14. //3. 使用
  15. jedis.set("hehe","heihei");
  16. //4. 关闭 归还到连接池中
  17. jedis.close();
  • 连接池工具类

    1. public class JedisPoolUtils {
    2. private static JedisPool jedisPool;
    3. static{
    4. //读取配置文件
    5. InputStream is = JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties");
    6. //创建Properties对象
    7. Properties pro = new Properties();
    8. //关联文件
    9. try {
    10. pro.load(is);
    11. } catch (IOException e) {
    12. e.printStackTrace();
    13. }
    14. //获取数据,设置到JedisPoolConfig中
    15. JedisPoolConfig config = new JedisPoolConfig();
    16. config.setMaxTotal(Integer.parseInt(pro.getProperty("maxTotal")));
    17. config.setMaxIdle(Integer.parseInt(pro.getProperty("maxIdle")));
    18. //初始化JedisPool
    19. jedisPool = new JedisPool(config,pro.getProperty("host"),Integer.parseInt(pro.getProperty("port")));
    20. }
    21. /**
    22. * 获取连接方法
    23. */
    24. public static Jedis getJedis(){
    25. return jedisPool.getResource();
    26. }
    27. }

    案例

    案例需求:
    1. 提供index.html页面,页面中有一个省份 下拉列表
    2. 当 页面加载完成后 发送ajax请求,加载所有省份

注意:使用redis缓存一些不经常发生变化的数据。

  • 数据库的数据一旦发生改变,则需要更新缓存。
    • 数据库的表执行 增删改的相关操作,需要将redis缓存数据情况,再次存入
    • 在service对应的增删改方法中,将redis数据删除。