Springboot集成redis 《springboot学习四》

版权声明:本文为HCG原创文章,未经博主允许不得转载。请联系[email protected] https://blog.csdn.net/qq_39455116/article/details/83744426

安装Redis

A: 开启redis服务

redis网站官方并没有windows版本,只有Microsoft Open Tech group 在 GitHub上开发了一个Win64的版本,地址为https://github.com/MicrosoftArchive/redis/releases

B:下载后解压即可

(注意需要管理员用户登陆),用的较多的文件如下

  • redis-server.exe 服务器

  • redis-cli.exe 客户端

  • redis.windows.conf 配置文件

C:运行redis-server.exe启动redis服务器
  1. 可以使用redis自带客户端连接,运行redis-cli.exe即可访问,默认访问的是db0。

扩展说一下,redis默认安装后有db0-db15共16个库,可以理解为mysql的库,注意 redis分库不会提升任何单台redis实例的性能,这里db0-db15库的概念在应用当中为区分数据类型,比如db0为测试库,db1为生产库,因为不同db上key可以重复。
切换db使用select选择具体库

  1. 安装Redis桌面客户端

    [下载地址](链接:https://pan.baidu.com/s/1hHQ-TrqCXA5-Nbp0x016-g
    提取码:ft61
    复制这段内容后打开百度网盘手机App,操作更方便哦)

    2.1 创建一个新的Name : my host:127.0.0.1 port:6379

    2.2 选中db2

    ​ 添加key :wanwan

    ​ value:小兔子


spring boot集成Redis

项目地址

1.pom 依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-redis</artifactId>
    <version>1.4.7.RELEASE</version>
</dependency>
2. 配置Redis

直接在application.yml文件中添加即可

注意里面的database选择是2,那你测试的时候就要用第二个,

不然你查不到数据,这个就相当于MySQL的数据库名称

spring:
    redis:
        database: 2
        host: 127.0.0.1
        port: 6379
        #password
        timeout: 5000
        pool:
            # 最大空闲连接数
            max-idle: 8
            # 最小空闲连接数
            min-idle: 0
            # 最大活跃连接数
            max-active: 8
            # 获取连接时的最大等待毫秒数(-1阻塞不确定的时间)
            max-wait: -1

添加完Redis之后的application-dev.yml文件为:

logging:
    config: classpath:conf/logback-dev.xml

spring:
    datasource:
        name: test
        url: jdbc:mysql://localhost:3306/cms?characterEncoding=utf8
        username: root
        password: 123456
        # 使用druid数据源
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.jdbc.Driver
        filters: stat
        maxActive: 20
        initialSize: 1
        maxWait: 60000
        minIdle: 1
        timeBetweenEvictionRunsMillis: 60000
        minEvictableIdleTimeMillis: 300000
        validationQuery: select 'x'
        testWhileIdle: true
        testOnBorrow: false
        testOnReturn: false
        poolPreparedStatements: true
        maxOpenPreparedStatements: 20
    redis:
        database: 2
        host: 127.0.0.1
        port: 6379
        #password
        timeout: 5000
        pool:
            # 最大空闲连接数
            max-idle: 8
            # 最小空闲连接数
            min-idle: 0
            # 最大活跃连接数
            max-active: 8
            # 获取连接时的最大等待毫秒数(-1阻塞不确定的时间)
            max-wait: -1

3. 打开redis服务测试

下面的测试用的是redis的db0数据库

package com.pf.org.cms.configuration;/**
 * Created by Administrator on 2018/2/6.
 */

import redis.clients.jedis.Jedis;

import java.util.Iterator;
import java.util.List;
import java.util.Set;

/**
 * Created by hcg on 2018/2/6.
 */
public class RedisTest {

    public static void main(String[] args) {
        //连接本地的 Redis 服务
        Jedis jedis = new Jedis("localhost");

        System.out.println("连接成功");
        //查看服务是否运行
        System.out.println("服务正在运行: "+jedis.ping());


//
//        //连接本地的 Redis 服务
//        Jedis jedis = new Jedis("localhost");
//        System.out.println("连接成功");
//        //设置 redis 字符串数据
//        jedis.set("runoobkey", "www.runoob.com");
//        // 获取存储的数据并输出
//        System.out.println("redis 存储的字符串为: "+ jedis.get("runoobkey"));
//    }


        jedis.lpush("site-list", "Runoob");
        jedis.lpush("site-list", "Google");
        jedis.lpush("site-list", "Taobao");
        // 获取存储的数据并输出
        List<String> list = jedis.lrange("site-list", 0 ,2);
        for(int i=0; i<list.size(); i++) {
            System.out.println("列表项为: "+list.get(i));
        }


        // 获取数据并输出
        Set<String> keys = jedis.keys("*");
        Iterator<String> it=keys.iterator() ;
        while(it.hasNext()){
            String key = it.next();
            System.out.println(key);
        }

    }

}

输出结果:

连接成功
服务正在运行: PONG
列表项为: Taobao
列表项为: Google
列表项为: Runoob
site-list
wanwan

4. 写一个Controller测试

4.1 写controller之前要写service,这里我们叫他《RedisManager》

封装StringRedisTemplate StringRedisTemplate是Spring继承RedisTemplate基础上封装的操作模板,
两者之间的区别可以参考(http://blog.csdn.net/notsaltedfish/article/details/75948281),为了方便自己使用,再做一次封装,也有利于了解StringRedisTemplate的API。

//RedisManager部分代码
public interface RedisManager {
    /**
     * 查询字符串
     *
     * @param key
     * @return
     */
    public String getStr(String key);
 }
@Service(value = "redisManager")
public class RedisManagerImpl implements RedisManager {
    @Autowired
    private StringRedisTemplate redisTemp;
    //这里需要引入下面的包
    //import org.springframework.data.redis.core.StringRedisTemplate;
   
    @Override
    public String getStr(String key) {
        return redisTemp.opsForValue().get(key);
    }
 }
4.2 controller测试

项目地址


注意:路径一定是shiro没有拦截的,因为之前我们定义了shiro

而且你的数据一定要在db2的数据库上面

@RequestMapping(value = "/demo", method = RequestMethod.GET)
@ResponseBody
public String testRedis(String key) {
    System.out.println("入参key为:"+key);
    String s = "查询结果为:"+redisManager.getStr(key);
    return s;
}

猜你喜欢

转载自blog.csdn.net/qq_39455116/article/details/83744426