Redis简单使用入门

文章目录
一、java对Redis基本操作示例
导入依赖:
java代码简单使用:
二、javaWeb 操作 Redis
1、RedisUtil工具类
2、controller
2、serviceimpl.java
3、mapper.xml

javaWeb 操作 Redis 代码下载
一、java对Redis基本操作示例
导入依赖:

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.0.1</version>
</dependency>

java代码简单使用:

/**
 * Created by yan on 2019/2/17.
 * 本机Redis,无密码!!!
 */
public class Redis {
    /**
     * Redis中存取值(String)
     */
    @Test
    public void test1(){
        Jedis jedis = new Jedis();
        //本地Redis服务状态,返回PONG--->正常
        String ping = jedis.ping();
        System.out.println(ping);
        //Redis存值
        jedis.set("firstKey", "第一个值");
        //Redis读取
        String firstKey = jedis.get("firstKey");
        System.out.println(firstKey);
        //关流
        jedis.close();
    }

    /**
     * Redis存储 Map
     */
    @Test
    public void test2(){
        Jedis jedis = new Jedis();

        jedis.hset("firstMap","field1","messages1");
        jedis.hset("twoMap","field2","messages2");

        String firstMap = jedis.hget("firstMap", "field1");
        String secondMap = jedis.hget("twoMap", "field2");

        System.out.println(firstMap);
        System.out.println(secondMap);

        jedis.close();
    }

    /**
     * Redis 查询所有 key
     */
    @Test
    public void test3(){
        Jedis jedis = new Jedis();
        Set<String> keys = jedis.keys("*");
        for (String key : keys) {
            System.out.println(key);
        }
        jedis.close();
    }

    /**
     * Redis 存储对象实体
     */
    @Test
    public void test4(){
        User user = new User(1,"张三",18);
        Jedis jedis = new Jedis();
        //将User实体转换成JSONString,存入redis
        String strUser = JSONObject.toJSONString(user);
        jedis.set("user",strUser);

        //将User实体取出,并打印出来
        String user1 = jedis.get("user");
        User user2 = JSON.parseObject(user1, User.class);
        System.out.println(user2);
        jedis.close();
    }

    /**
     * Redis存储对象集合
     */
    @Test
    public void test5(){
        User user1 = new User(1,"闫",23);
        User user2 = new User(2,"创",24);
        User user3 = new User(3,"业",25);
        List<User> userList = new ArrayList<>();
        userList.add(user1);
        userList.add(user2);
        userList.add(user3);
        //将集合转变为JSONString
        String strUserList = JSONObject.toJSONString(userList);
        Jedis jedis = new Jedis();
        jedis.set("userList",strUserList);
        //取出
        String userList1 = jedis.get("userList");
        List<User> users = JSON.parseArray(userList1, User.class);
        System.out.println(users);
        jedis.close();
    }
}

二、javaWeb 操作 Redis

1、RedisUtil工具类

首先添加RedisUtil工具类(简约版),注释很清楚,就不多说了

/**
 * Created by yan on 2019/2/18.
 */
public class RedisUtil {

    //服务器ip地址
    private static String REDIS_HOST = "127.0.0.1";

    //Redis端口号
    private static int REDIS_PORT = 6379;

    //Redis密码
    //private static String redisAuth = "123456";

    //Redis实例最大连接数,默认值为 8,(-1代表无限制,如果破pool分配完MAX_ACTIVE实例 状态为exhausted)
    private static int REDIS_MAX_ACTIVE = 100;

    //一个pool中最多有多少idle(空闲)的实例,默认值 8
    private static int REDIS_MAX_IDLE = 8;

    //等待连接最大时间(毫秒),默认值 -1(用不超时),(超过MAX_WAIT抛出JedisConnectionException)
    private static int REDIS_MAX_WAIT = 10000;

    //连接超时时间,默认值 0 用不超时
    private static int REDIS_TIME_OUT = 0;

    //在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的
    private static boolean REDIS_TEST_ON_BORROW = true;

    private static JedisPool jedisPool = null;

    /**
     * 初始化redis连接池配置
     */
    static{
        try {
            JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
            jedisPoolConfig.setMaxIdle(REDIS_MAX_IDLE);
            jedisPoolConfig.setMaxWaitMillis(REDIS_MAX_WAIT);
            jedisPoolConfig.setMaxTotal(REDIS_MAX_IDLE);
            jedisPoolConfig.setTestOnBorrow(REDIS_TEST_ON_BORROW);
            jedisPool = new JedisPool(jedisPoolConfig,REDIS_HOST,REDIS_PORT,REDIS_TIME_OUT);
        } catch (Exception e){
            e.printStackTrace();
        }
    }

    /**
     * 获取Redis实例
     */
    public static synchronized Jedis getJedis(){
        try {
            if (jedisPool != null)
            {
                Jedis resource = jedisPool.getResource();
                return resource;
            }
            else
            {
                return null;
            }
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * 释放Redis资源(关流)
     */
    public static void closeJedisResource(final Jedis jedis){
        if(jedis != null){
            jedis.close();
        }
    }

    /**
     * 设置key过期时间
     */
    public static void expire(String key,int seconds){
        if(seconds <= 0){
            return;
        }
        Jedis jedis = jedisPool.getResource();
        jedis.expire(key,seconds);
    }
    
}

2、controller

    @RequestMapping("selectUserList")
	@ResponseBody
	public List<User> selectUserList(){
	    List<User> userList = redisService.selectUser();
	    return userList;
	}

3、serviceimpl.java
 

@Service
public class RedisServiceImpl implements RedisService {
    @Autowired
    private RedisMapper redisMapper;

    @Override
    public List<User> selectUser() {
        //获取jedis实例
        Jedis jedis = RedisUtil.getJedis();
        //判断Redis中是否存在userList,没有-->则通过mapper查询数据库返回-->并储存在Redis中,
        //有则从Redis缓存中直接返回
        if(!jedis.exists("userList")){
            try {
                List<User> userList = redisMapper.selectUser();
                //将User集合转化为String
                String strUserList = JSONObject.toJSONString(userList);
                //存放到Redis中
                jedis.set("userList", strUserList);
                //设置Key过期时间,600s
                RedisUtil.expire("userList", 600);
                return userList;
            } finally {
                //关流,还不如直接close()呢
                RedisUtil.closeJedisResource(jedis);
            }
        }else{
            try {
                //从Redis中取出userList,并转换为集合
                String strUserList = jedis.get("userList");
                List<User> userList = JSONObject.parseArray(strUserList,User.class);
                return userList;
            } finally {
                RedisUtil.closeJedisResource(jedis);
            }
        }
    }
}

3、mapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mr.good.mapper.RedisMapper">
    <select id="selectUser" resultType="user">
        select * from t_user
    </select>
</mapper>

   可以debug serviceimpl.java 查看Redis缓存效果!

本文转载来自https://blog.csdn.net/weixin_44030218/article/details/87553193

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值