目录
一、Jedis知识点总览。


public class ProvinceServiceImpl implements ProvinceService {
private ProvinceDao dao = new ProvinceDaoImpl();
@Override
public List<Province> findAll() {
return dao.findAll();
}
@Override
public String findAllJson() throws IOException {
//1.先从redis中查询数据
//1.1获取Redis客户端连接
Jedis jedis = JedisPoolUtils.getJedis();
String province_json = jedis.get("province");//将这个键删除,就删除了redis缓存数据了
//2.判断province_json 数据是否为null
if (province_json == null || province_json.length() == 0){
System.out.println("redis中没有数据,查询数据库...");
//1.redis中没有数据
//2.1从数据库查询数据
List<Province> ps = findAll();
//2.2将list序列化为json
ObjectMapper mapper = new ObjectMapper();
province_json = mapper.writeValueAsString(ps);
//2.3将json数据存入redis
jedis.set("province",province_json);
//归还连接
jedis.close();
}else {
System.out.println("redis中有数据,查询缓存...");
}
return province_json;
}
}
@WebServlet("/provinceServlet")
public class ProvinceServlet extends HttpServlet {
@Override
protected 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为json
ObjectMapper 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);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req,resp);
}
}
二、连接池配置:
/**
* JedisPool连接池技术
*/
@Test
public 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 {
/**
* 快速入门
*/
@Test
public void test1(){
//1.获取连接
Jedis jedis = new Jedis("locathost",6379);
//2.操作
jedis.set("username","zhangsan");
//3.关闭连接
jedis.close();
}
/**
* string 数据结构操作
*/
@Test
public 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 数据结构操作
*/
@Test
public void test3(){
//1.获取连接
Jedis jedis = new Jedis();//如果使用空参构造,默认值:"locathost",6379端口
//2.操作
//存储hash
jedis.hset("user","name","lisi");
jedis.hset("user","age","23");
jedis.hset("user","gender","male");
//获取hash
String 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) {
//获取value
String value = user.get(key);
System.out.println(key+":"+value);
}
//3.关闭连接
jedis.close();
}
/**
* list 数据结构操作
*/
@Test
public 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 数据结构操作
*/
@Test
public 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) 数据结构操作
*/
@Test
public 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();
}
}

1601

被折叠的 条评论
为什么被折叠?



