1. 基本使用
//1. 获取连接Jedis jedis = new Jedis("localhost",6379);//2. 操作jedis.set("username","zhangsan");//3. 关闭连接jedis.close();
2. Jedis操作各种redis中的数据结构
1) 字符串类型 string
//1. 获取连接Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口//2. 操作//存储jedis.set("username","zhangsan");//获取String username = jedis.get("username");System.out.println(username);//可以使用setex()方法存储可以指定过期时间的 key valuejedis.setex("activecode",20,"hehe");//将activecode:hehe键值对存入redis,并且20秒后自动删除该键值对//3. 关闭连接jedis.close();
2) 哈希类型 hash : map格式
//1. 获取连接Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口//2. 操作// 存储hashjedis.hset("user","name","lisi");jedis.hset("user","age","23");jedis.hset("user","gender","female");// 获取hashString name = jedis.hget("user", "name");System.out.println(name);// 获取hash的所有map中的数据Map<String, String> user = jedis.hgetAll("user");// keysetSet<String> keySet = user.keySet();for (String key : keySet) {//获取valueString value = user.get(key);System.out.println(key + ":" + value);}//3. 关闭连接jedis.close();
3) 列表类型 list : linkedlist格式。支持重复元素
lpush / rpush
lpop / rpop
lrange start end : 范围获取
//1. 获取连接Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口//2. 操作// list 存储jedis.lpush("mylist","a","b","c");//从左边存jedis.rpush("mylist","a","b","c");//从右边存// list 范围获取List<String> mylist = jedis.lrange("mylist", 0, -1);System.out.println(mylist);// list 弹出String element1 = jedis.lpop("mylist");//cSystem.out.println(element1);String element2 = jedis.rpop("mylist");//cSystem.out.println(element2);// list 范围获取List<String> mylist2 = jedis.lrange("mylist", 0, -1);System.out.println(mylist2);//3. 关闭连接jedis.close();
4) 集合类型 set: 不允许重复元素
sadd
smembers:获取所有元素
//1. 获取连接Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口//2. 操作// set 存储jedis.sadd("myset","java","php","c++");// set 获取Set<String> myset = jedis.smembers("myset");System.out.println(myset);//3. 关闭连接jedis.close();
5) 有序集合类型 sortedset:不允许重复元素,且元素有顺序
zadd
zrange
//1. 获取连接Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口//2. 操作// sortedset 存储jedis.zadd("mysortedset",3,"亚瑟");jedis.zadd("mysortedset",30,"后裔");jedis.zadd("mysortedset",55,"孙悟空");// sortedset 获取Set<String> mysortedset = jedis.zrange("mysortedset", 0, -1);System.out.println(mysortedset);//3. 关闭连接jedis.close();
3. Jedis 连接池
- 创建JedisPool连接池对象
- 调用方法 getResource()方法获取Jedis连接
```java //0.创建一个配置对象 JedisPoolConfig config = new JedisPoolConfig(); config.setMaxTotal(50); config.setMaxIdle(10);
//1.创建Jedis连接池对象 JedisPool jedisPool = new JedisPool(config,”localhost”,6379);
//2.获取连接 Jedis jedis = jedisPool.getResource();
//3. 使用 jedis.set(“hehe”,”heihei”);
<a name="cjKjo"></a>## 4. 写一个Jedis 工具类```javapublic class JedisPoolUtils {private static JedisPool jedisPool;static{//读取配置文件InputStream is = JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties");//创建Properties对象Properties pro = new Properties();//关联文件try {pro.load(is);} catch (IOException e) {e.printStackTrace();}//获取数据,设置到JedisPoolConfig中JedisPoolConfig config = new JedisPoolConfig();config.setMaxTotal(Integer.parseInt(pro.getProperty("maxTotal")));config.setMaxIdle(Integer.parseInt(pro.getProperty("maxIdle")));//初始化JedisPooljedisPool = new JedisPool(config,pro.getProperty("host"),Integer.parseInt(pro.getProperty("port")));}/*** 获取连接方法*/public static Jedis getJedis(){return jedisPool.getResource();}}
5. Jedis 实例:
- 注意:使用redis缓存一些不经常发生变化的数据。
数据库的数据一旦发生改变,则需要更新缓存。
数据库的表执行 增删改的相关操作,需要将redis缓存数据情况,再次存入
在service对应的增删改方法中,将redis数据删除。 ```java /*- 使用redis缓存 */
@Override public String findAllJson() { //1.先从redis中查询数据 //1.1获取redis客户端连接 Jedis jedis = JedisPoolUtils.getJedis(); String province_json = jedis.get(“province”);
//2判断 province_json 数据是否为nullif(province_json == null || province_json.length() == 0){//redis中没有数据System.out.println("redis中没数据,查询数据库...");//2.1从数据中查询List<Province> ps = dao.findAll();//2.2将list序列化为jsonObjectMapper mapper = new ObjectMapper();try {province_json = mapper.writeValueAsString(ps);} catch (JsonProcessingException e) {e.printStackTrace();}//2.3 将json数据存入redisjedis.set("province",province_json);//归还连接jedis.close();}else{System.out.println("redis中有数据,查询缓存...");}return province_json;
} ```
