• springboot整合redis详细步骤


    一:springboot整合redis

    redis版本:3.0.0

    运行环境:linux

    1.安装redis

    1.1安装gcc
    	yum install gcc-c++
    1.2解压redis.3.0.0.tar.gz压缩包
    	tar -zxvf redis-3.0.0.tar.gz
    1.3进入解压后的目录进行编译
    	cd redis-3.0.0
      	make
    1.4将redis安装到指定目录
    	make PREFIX=/usr/local/redis install
    1.5启动redis
    	./redis-server		ctrl+c停止 
    1.6复制redis.conf到/usr/local/redis/bin/
      	cp redis.conf /usr/local/redis/bin/
    1.7编辑复制的redis.conf
    	将daemonize no 改为daemonize yes
    1.8启动redis服务(6379)
      	./redis-server redis.conf
    	ps aux|grep redis	#查看redis是否启动
    	./redis-cli shutdown	#关闭redis服务
    

    2.springboot整合spring data redis

    spring data redis是属于spring data下的一个模块.作用就是简化对于redis的操作.

    2.1修改pom文件添加redis依赖

    <!-- redis的springboot启动器 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-redis</artifactId>
      <!-- 1.5的版本默认采用的连接池技术是jedis  2.0以上版本默认连接池是lettuce, 在这里采用jedis,所以需要排除lettuce的jar -->
      <exclusions>
        <exclusion>
          <groupId>io.lettuce</groupId>
          <artifactId>lettuce-core</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <!-- 添加jedis客户端 -->
    <dependency>
      <groupId>redis.clients</groupId>
      <artifactId>jedis</artifactId>
    </dependency>
    <!-- 将作为Redis对象序列化器 -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.47</version>
    </dependency>
    

    2.2编写springdataredis的配置类

    @Configuration
    public class RedisConfig {
      //1.创建JedisPoolConfig对象,在该对象中完成一些连接池配置
      //2.创建JedisConnectionFactory对象,配置redis连接信息
      //@ConfigurationProperties(prefix="spring.redis"):会将前缀相同的内容创建一个实体
      //3.创建RedisTemplate:用于执行Redis操作方法
      @Bean
      public RedisTemplate<String, Object> getRedisTemplate(JedisConnectionFactory factory){
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        //关联连接工厂
        template.setConnectionFactory(factory);
        //为key设置序列化
        template.setKeySerializer(new StringRedisSerializer());
        //为value设置序列化
        template.setValueSerializer(new StringRedisSerializer());
        return template;
      }				
    }
    

    2.3编写测试代码

    2.3.1修改pom文件添加test依赖

    <!-- test的springboot启动器 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
    

    2.3.2编写测试类

    @RunWith(SpringJUnit4ClassRunner.class)
    @SpringBootTest(classes=Application.class)	//Application是springboot启动类的类名
    public class RedisTest {
      @Autowired
      private RedisTemplate<String, Object> redisTemplate;					
      //添加一个字符串
      @Test
      public void testSet() {
        this.redisTemplate.opsForValue().set("key", "测试redis整合");
      }					
      //获取一个字符串
      @Test
      public void testGet() {
        String value = (String)this.redisTemplate.opsForValue().get("key");
        System.out.println(value);
      }						
    }
    

    3.提取redis的配置信息

    3.1在src/main/resource/目录下新建一个配置文件:application.yaml

    @ConfigurationProperties(prefix="spring.redis"):会将前缀相同的内容创建一个实体

    # redis配置
    spring:
    	redis:
    #   	redis数据库索引(默认为零)
    		database: 0
    #		host是自己虚拟机的ip地址
    		host: 192.168.91.100
    		port: 6379
    		password: 
    	jedis: 
    		pool: 
    #       	连接池最大连接数(使用负值表示没有限制)
    			max-active: 8
    #       	连接池最大阻塞等待时间(使用负值表示没有限制)
    			max-wait: -1
    #       	连接池最大空闲连接
    			max-idle: 8
    #       	连接池最小空闲连接
    			min-idle: 0
    #   连接超时时间(毫秒)
    	timeout: 10000
    

    4.spring Date Redis操作实体对象

    4.1创建实体类User

    public class User implements Serializable{
    	private Integer id;
    	private String name;
    	private String age;
    	public User() {
    		// TODO Auto-generated constructor stub
    	}
    	public User(Integer id, String name, String age) {
    		super();
    		this.id = id;
    		this.name = name;
    		this.age = age;
    	}
    	public Integer getId() {
    		return id;
    	}
    	public void setId(Integer id) {
    		this.id = id;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getAge() {
    		return age;
    	}
    	public void setAge(String age) {
    		this.age = age;
    	}
    	@Override
    	public String toString() {
    		return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
    	}
    }
    

    4.2测试代码

    //添加user实体类
    @Test
    public void testSetUser() {
      User user = new User();
      user.setId(1);
      user.setName("zlg");
      user.setAge("18");
      //重新设置序列化器
      this.redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());
      this.redisTemplate.opsForValue().set("user", user);
    }					
    //根据key获取实体类对象
    @Test
    public void testGetUser() {
      //反序列化,重新设置序列化器
      this.redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());
      User user = (User)this.redisTemplate.opsForValue().get("user");
      System.out.println(user);
    }
    

    5.spring data redis以json格式存储实体对象

    5.1测试代码

    //3.基于json格式存user对象
    @Test
    public void testSetUserUseJson() {
      User user = new User();
      user.setId(1);
      user.setName("zlg");
      user.setAge("18");
      //重新设置序列化器
      this.redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(User.class));
      this.redisTemplate.opsForValue().set("user_json", user);
    }	
    //基于json格式取对象
    @Test
    public void testGetUserUseJson() {
      //反序列化
      this.redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(User.class));
      User user = (User)this.redisTemplate.opsForValue().get("user_json");
      System.out.println(user);
    }
  • 相关阅读:
    初认识AngularJS
    (imcomplete) UVa 10127 Ones
    UVa 10061 How many zero's and how many digits?
    UVa 11728 Alternate Task
    UVa 11490 Just Another Problem
    UVa 10673 Play with Floor and Ceil
    JSON对象和字符串的收发(JS客户端用typeof()进行判断非常重要)
    HTML.ActionLink 和 Url.Action 的区别
    EASYUI TREE得到当前节点数据的GETDATA方法
    jqueery easyui tree把已选中的节点数据拼成json或者数组(非常重要)
  • 原文地址:https://www.cnblogs.com/itzlg/p/10699458.html
Copyright © 2020-2023  润新知