16.Jedis

目录 

一、Jedis知识点总览。

二、连接池配置: 

三、测试类:


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

}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值