目录
一、Jedis知识点总览。
二、连接池配置:
三、测试类:
一、Jedis知识点总览。
public class ProvinceServiceImpl implements ProvinceService {private ProvinceDao dao = new ProvinceDaoImpl();@Overridepublic List<Province> findAll() {return dao.findAll();}@Overridepublic String findAllJson() throws IOException {//1.先从redis中查询数据//1.1获取Redis客户端连接Jedis jedis = JedisPoolUtils.getJedis();String province_json = jedis.get("province");//将这个键删除,就删除了redis缓存数据了//2.判断province_json 数据是否为nullif (province_json == null || province_json.length() == 0){System.out.println("redis中没有数据,查询数据库...");//1.redis中没有数据//2.1从数据库查询数据List<Province> ps = findAll();//2.2将list序列化为jsonObjectMapper mapper = new ObjectMapper();province_json = mapper.writeValueAsString(ps);//2.3将json数据存入redisjedis.set("province",province_json);//归还连接jedis.close();}else {System.out.println("redis中有数据,查询缓存...");}return province_json;}
}
@WebServlet("/provinceServlet")
public class ProvinceServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.setContentType("application/json;charset=utf-8");/*//1.调用service查询ProvinceService service = new ProvinceServiceImpl();List<Province> list = service.findAll();//2.序列化list为jsonObjectMapper mapper = new ObjectMapper();
// String json = mapper.writeValueAsString(list);//3.响应结果
// resp.getWriter().write(json);mapper.writeValue(resp.getOutputStream(),list);*//*** 使用redis缓存查询*///1.调用service查询ProvinceService service = new ProvinceServiceImpl();String json = service.findAllJson();//2.响应结果resp.getWriter().write(json);}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req,resp);}
}
二、连接池配置:
/*** JedisPool连接池技术*/@Testpublic void test7(){//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","haha");//4.关闭,实际是归还到连接池中jedis.close();}
三、测试类:
package test;import org.junit.Test;
import redis.clients.jedis.Jedis;import java.util.List;
import java.util.Map;
import java.util.Set;/*** jedis的测试类*/
public class JedisTest {/*** 快速入门*/@Testpublic void test1(){//1.获取连接Jedis jedis = new Jedis("locathost",6379);//2.操作jedis.set("username","zhangsan");//3.关闭连接jedis.close();}/*** string 数据结构操作*/@Testpublic void test2(){//1.获取连接Jedis jedis = new Jedis();//如果使用空参构造,默认值:"locathost",6379端口//2.操作//存储jedis.set("username","zhangsan");//获取String username = jedis.get("username");System.out.println(username);//可以使用setex()方法存储可以指定过期时间的 key value//将activecode:hehe 键值对存入Redis,并且20秒后自动删除该键值对jedis.setex("activecode",20,"hehe");//3.关闭连接jedis.close();}/*** hash 数据结构操作*/@Testpublic void test3(){//1.获取连接Jedis jedis = new Jedis();//如果使用空参构造,默认值:"locathost",6379端口//2.操作//存储hashjedis.hset("user","name","lisi");jedis.hset("user","age","23");jedis.hset("user","gender","male");//获取hashString name = jedis.hget("user", "name");System.out.println(name);//获取hash的所有map中的数据Map<String, String> user = jedis.hgetAll("user");Set<String> keySet = user.keySet();for (String key:keySet) {//获取valueString value = user.get(key);System.out.println(key+":"+value);}//3.关闭连接jedis.close();}/*** list 数据结构操作*/@Testpublic void test4(){//1.获取连接Jedis jedis = new Jedis();//如果使用空参构造,默认值:"locathost",6379端口//2.操作//list存储jedis.lpush("mylist","a","b","c");//从左边存jedis.rpush("mylist","d","e","f");//从右边存//list 范围获取List<String> mylist = jedis.lrange("mylist", 0, -1);System.out.println(mylist);//[c, b, a, d, e, f]//list 弹出String element1 = jedis.lpop("mylist");String element2 = jedis.rpop("mylist");System.out.println(element1);System.out.println(element2);//list 范围获取List<String> mylist2 = jedis.lrange("mylist", 0, -1);System.out.println(mylist2);//[b, a, d, e]//3.关闭连接jedis.close();}/*** set 数据结构操作*/@Testpublic void test5(){//1.获取连接Jedis jedis = new Jedis();//如果使用空参构造,默认值:"locathost",6379端口//2.操作//set存储jedis.sadd("myset","java","php","c++");//set 获取Set<String> myset = jedis.smembers("myset");System.out.println(myset);//3.关闭连接jedis.close();}/*** zset(sortedset) 数据结构操作*/@Testpublic void test6(){//1.获取连接Jedis jedis = new Jedis();//如果使用空参构造,默认值:"locathost",6379端口//2.操作//sortedset存储jedis.zadd("myzset",1,"亚瑟");jedis.zadd("myzset",2,"后裔");jedis.zadd("myzset",3,"孙悟空");//sortedset 获取Set<String> myzset = jedis.zrange("myzset", 0, -1);System.out.println(myzset);//3.关闭连接jedis.close();}}