zoukankan      html  css  js  c++  java
  • springboot整合Redis

    springboot整合Redis


    pom

    		<!-- 引入 redis 依赖 -->
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-data-redis</artifactId>
    		</dependency>

    application

    • springboot2.0之前
    #REDIS配置
    ############################################################
    #Redis数据库索引(默认为0)
    spring.redis.database=1
    #Redis服务器地址
    spring.redis.host=192.168.1.191
    #Redis服务器连接端口
    spring.redis.port=6379
    #Redis服务器连接密码(默认为空)
    spring.redis.password=
    #连接池最大连接数(使用负值表示没有限制)
    spring.redis.pool.max-active=1000
    #连接池最大阻塞等待时间(使用负值表示没有限制)
    spring.redis.pool.max-wait=-1
    #连接池中的最大空闲连接
    spring.redis.pool.max-idle=10
    #连接池中的最小空闲连接
    spring.redis.pool.min-idle=2
    #连接超时时间(毫秒)
    spring.redis.timeout=0

    • springboot2.0之后
    spring:
      redis:
        #redis的数据库缩影,默认0
        database: 3
        host: localhost
        port: 6379
        password: 123456
        timeout: 0
        jedis:
          pool:
            max-active: 1000
            max-wait: -1
            max-idle: 10
            min-idle: 2
        lettuce:
          pool:
            max-active: 1000
            max-wait: -1
            max-idle: 10
            min-idle: 2
            shutdown-timeout: 100ms

    工具类

    import java.util.Map;
    import java.util.Set;
    import java.util.concurrent.TimeUnit;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.data.redis.core.RedisKeyValueTemplate;
    import org.springframework.data.redis.core.RedisTemplate;
    import org.springframework.data.redis.core.StringRedisTemplate;
    import org.springframework.stereotype.Component;
    
    /**
     * 
     * @Title: RedisOperator.java
     * @Package com.itzixi.web.component
     * @Description: 使用redisTemplate的操作实现类 Copyright: Copyright (c) 2016
     *               Company:FURUIBOKE.SCIENCE.AND.TECHNOLOGY
     * 
     * @author leechenxiang
     * @date 2017年9月29日 下午2:25:03
     * @version V1.0
     */
    @Component
    public class RedisOperator {
    	
    //	@Autowired
    //    private RedisTemplate<String, Object> redisTemplate;
    	
    	@Autowired
    	private StringRedisTemplate redisTemplate;
    	
    	// Key(键),简单的key-value操作
    
    	/**
    	 * 实现命令:TTL key,以秒为单位,返回给定 key的剩余生存时间(TTL, time to live)。
    	 * 
    	 * @param key
    	 * @return
    	 */
    	public long ttl(String key) {
    		return redisTemplate.getExpire(key);
    	}
    	
    	/**
    	 * 实现命令:expire 设置过期时间,单位秒
    	 * 
    	 * @param key
    	 * @return
    	 */
    	public void expire(String key, long timeout) {
    		redisTemplate.expire(key, timeout, TimeUnit.SECONDS);
    	}
    	
    	/**
    	 * 实现命令:INCR key,增加key一次
    	 * 
    	 * @param key
    	 * @return
    	 */
    	public long incr(String key, long delta) {
    		return redisTemplate.opsForValue().increment(key, delta);
    	}
    
    	/**
    	 * 实现命令:KEYS pattern,查找所有符合给定模式 pattern的 key
    	 */
    	public Set<String> keys(String pattern) {
    		return redisTemplate.keys(pattern);
    	}
    
    	/**
    	 * 实现命令:DEL key,删除一个key
    	 * 
    	 * @param key
    	 */
    	public void del(String key) {
    		redisTemplate.delete(key);
    	}
    
    	// String(字符串)
    
    	/**
    	 * 实现命令:SET key value,设置一个key-value(将字符串值 value关联到 key)
    	 * 
    	 * @param key
    	 * @param value
    	 */
    	public void set(String key, String value) {
    		redisTemplate.opsForValue().set(key, value);
    	}
    
    	/**
    	 * 实现命令:SET key value EX seconds,设置key-value和超时时间(秒)
    	 * 
    	 * @param key
    	 * @param value
    	 * @param timeout
    	 *            (以秒为单位)
    	 */
    	public void set(String key, String value, long timeout) {
    		redisTemplate.opsForValue().set(key, value, timeout, TimeUnit.SECONDS);
    	}
    
    	/**
    	 * 实现命令:GET key,返回 key所关联的字符串值。
    	 * 
    	 * @param key
    	 * @return value
    	 */
    	public String get(String key) {
    		return (String)redisTemplate.opsForValue().get(key);
    	}
    
    	// Hash(哈希表)
    
    	/**
    	 * 实现命令:HSET key field value,将哈希表 key中的域 field的值设为 value
    	 * 
    	 * @param key
    	 * @param field
    	 * @param value
    	 */
    	public void hset(String key, String field, Object value) {
    		redisTemplate.opsForHash().put(key, field, value);
    	}
    
    	/**
    	 * 实现命令:HGET key field,返回哈希表 key中给定域 field的值
    	 * 
    	 * @param key
    	 * @param field
    	 * @return
    	 */
    	public String hget(String key, String field) {
    		return (String) redisTemplate.opsForHash().get(key, field);
    	}
    
    	/**
    	 * 实现命令:HDEL key field [field ...],删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。
    	 * 
    	 * @param key
    	 * @param fields
    	 */
    	public void hdel(String key, Object... fields) {
    		redisTemplate.opsForHash().delete(key, fields);
    	}
    
    	/**
    	 * 实现命令:HGETALL key,返回哈希表 key中,所有的域和值。
    	 * 
    	 * @param key
    	 * @return
    	 */
    	public Map<Object, Object> hgetall(String key) {
    		return redisTemplate.opsForHash().entries(key);
    	}
    
    	// List(列表)
    
    	/**
    	 * 实现命令:LPUSH key value,将一个值 value插入到列表 key的表头
    	 * 
    	 * @param key
    	 * @param value
    	 * @return 执行 LPUSH命令后,列表的长度。
    	 */
    	public long lpush(String key, String value) {
    		return redisTemplate.opsForList().leftPush(key, value);
    	}
    
    	/**
    	 * 实现命令:LPOP key,移除并返回列表 key的头元素。
    	 * 
    	 * @param key
    	 * @return 列表key的头元素。
    	 */
    	public String lpop(String key) {
    		return (String)redisTemplate.opsForList().leftPop(key);
    	}
    
    	/**
    	 * 实现命令:RPUSH key value,将一个值 value插入到列表 key的表尾(最右边)。
    	 * 
    	 * @param key
    	 * @param value
    	 * @return 执行 LPUSH命令后,列表的长度。
    	 */
    	public long rpush(String key, String value) {
    		return redisTemplate.opsForList().rightPush(key, value);
    	}
    
    }

    使用

    	@Autowired
    	private StringRedisTemplate strRedis;
    	@Autowired
    	private RedisOperator redis;
    
    //设置字符串
    strRedis.opsForValue().set("imooc-cache", "hello 慕课网~~~~~~");
    strRedis.opsForValue().set("json:user", JsonUtils.objectToJson(user));
    //设置对象
    redis.set("json:info:userlist", JsonUtils.objectToJson(userList), 2000);








  • 相关阅读:
    一个网络传输框架——zeroMQ 调研笔记
    Node.js的cluster模块——Web后端多进程服务
    boost::spirit unicode 简用记录
    HTTP的长连接和短连接——Node上的测试
    MongoDB 驱动以及分布式集群读取优先级设置
    Lua知识备忘录
    MongoDB使用小结:一些常用操作分享
    此项目与Visual Studio的当前版本不兼容的报错
    @Controller和@RestController的区别
    SQLSERVER中计算某个字段中用分隔符分割的字符的个数
  • 原文地址:https://www.cnblogs.com/ziyue7575/p/fbd3460856c64f553ec7670b5a564c11.html
Copyright © 2011-2022 走看看