`

redis之setex保存json字符串

阅读更多
redis之setex, 设置过期秒数,redis服务器自动清理过期key

setex k1 3000 "value1"
get k1
ttl k1

注意:
CONFIG SET protected-mode no
/sbin/service iptables stop

(1)配置参数
spring.redis.host=192.168.191.128
spring.redis.port=6379
spring.redis.password=1
spring.redis.timeout=1000
spring.redis.jedis.pool.min-idle=5
spring.redis.jedis.pool.max-active=10
spring.redis.jedis.pool.max-idle=10
spring.redis.jedis.pool.max-wait=2000

(2)自动加载参数
@Component
public class RedisConfig {
@Value("${spring.redis.host}")
private String host;
@Value("${spring.redis.port}")
private int port;
@Value("${spring.redis.timeout}")
private int timeout;
@Value("${spring.redis.password}")
private String password;

@Value("${spring.redis.jedis.pool.max-active}")
private int poolMaxTotal;
@Value("${spring.redis.jedis.pool.max-idle}")
private int poolMaxIdel;
@Value("${spring.redis.jedis.pool.max-wait}")
private int poolMaxWait;

@Bean
public JedisPoolConfig getGenericObjectPoolConfig(){
JedisPoolConfig config=new JedisPoolConfig();
config.setMaxTotal(poolMaxTotal);
config.setMaxIdle(poolMaxIdel);
config.setMaxWaitMillis(poolMaxWait);
config.setTestOnBorrow(true);
return config;
}

@Bean
public JedisPool getJedisPool(JedisPoolConfig config){
JedisPool pool=new JedisPool(host,port);
//new JedisPool(config,host,port,timeout,password);

return pool;
}

@Bean
public Jedis getJedis(){
return new Jedis(host,port);
}

}

(3)redis连接
/**
* 需要可以将任意的类型转化为string类型,并且可以根据字符串还原出对象
*
* get,set方法 调用时,key都是加上前缀后的key,并且可以设置过期时间。
*/
@Service
public class RedisService {
private int expiredTime = 5;
@Autowired
private JedisPool jedisPool;

public <T> T get(String prefix,String key,Class<T> clazz){
Jedis j=null;
try{
j=jedisPool.getResource();
return string2Key(j.get(prefix+key) , clazz);
}finally{
j.close();
}
}

public <T> void set(String prefix,String key,T value){
Jedis j=null;
try{
j=jedisPool.getResource();
String v=key2String(value);
System.out.println("v="+v);
//j.set(prefix+key, v);
j.setex(prefix+key, expiredTime, v);
}finally{
j.close();
}
}

public <T> String key2String(T key){
return JSON.toJSONString(key);
}

public <T> T string2Key(String key, Class<T> clazz){
return JSON.parseObject(key, clazz);
}
}

(4)redis缓存应用(使用setex,默认5秒,过期自动删除)
@Controller("user_controller")
@RequestMapping("/user")
public class UserController{

@Autowired
private RedisService redisService;

@RequestMapping("/")
public String list(Model model,HttpServletResponse response) {
UserPO user = new UserPO();
user.setUserId(100);
user.setUserName("zhangsan");

String key = user.getUserId().toString();
//默认5秒过期,redis服务器自动清理过期的key
redisService.set("user", key, user);

UserPO resUser = redisService.get("user", key, UserPO.class);
System.out.println("resUser: "+resUser.getUserName());
try {
Thread.sleep(6000);
} catch (InterruptedException e) {
e.printStackTrace();
}
resUser = redisService.get("user", key, UserPO.class);
System.out.println("resUser: "+resUser.getUserName());
return "index";
}
}

0
0
分享到:
评论

相关推荐

    Redis缓存,泛型集合与json字符串的相互转换实例

    在本文中,我们将深入探讨Redis缓存的使用,以及如何在Java中处理泛型集合和JSON字符串之间的相互转换。这些技术对于构建高效、可扩展的Web应用程序至关重要,尤其是在处理大量数据时,缓存和数据序列化可以显著提高...

    字符串文件

    在Redis中,字符串是最基本的数据类型之一,其核心特点在于它可以存储二进制安全的数据。这意味着无论数据的格式如何——例如JPEG图像、JSON文档或是简单的文本——都可以被存储为字符串类型。 - **二进制安全性**...

    Redis 字符串(String)

    Redis 字符串(String)是Redis数据结构中的基本类型之一,它允许存储和操作单个字符串。Redis中的字符串可以是任何二进制安全的数据,这意味着你可以存储任何格式的信息,包括JSON对象、图片或者其他任意数据。 在...

    02_redis 数据库类型 和 增删改查 命令行管理工具.docx

    1. **String(字符串)**:最基础的数据结构,可以存储简单的文本字符串、XML、JSON 文档、数字或二进制数据等。 2. **Hash(哈希)**:用于存储字段-值对映射,适用于需要保存对象多个属性的场景。 3. **List(列表...

    redis命令.docx

    Redis 是一个高性能的键值数据库,其数据结构丰富,包括字符串(String)、列表(List)、集合(Set)、有序集合(Sorted Set)和哈希(Hash)五种主要的数据类型。这些数据类型使得Redis能胜任多种场景下的数据存储需求。 1....

    redis_day03.zip

    Redis支持多种数据类型,如字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。这些数据类型提供了丰富的操作,使得Redis在处理不同场景时非常灵活。 在PHP中操作Redis,通常...

    MySQL和Redis实现二级缓存的方法详解

    2. **丰富的数据类型**:支持字符串、列表、集合、有序集合和哈希表等多种数据结构。 3. **操作原子性**:所有操作都是原子性的,确保数据一致性。 4. **事务支持**:Redis支持简单的事务操作,通过MULTI和EXEC命令...

    Redis教程(二):String数据类型

    Redis中的String数据类型是Redis五大数据类型之一,它是Redis中最基本的数据存储单元,可以存储任意的二进制数据,如文本、图片数据、JSON对象等。由于它的二进制安全性,使得它能适应多种场景的需求。String类型的...

    jedis接口API

    首先,字符串类型是 Redis 中最基本的数据类型,可以存储最多 512MB 的二进制安全数据,这意味着它可以处理各种类型的数据,如文本、图片数据或 JSON 对象。以下是一些常用的 Jedis 字符串操作接口: 1. `set...

    Python如何操作docker redis过程解析

    `Popen`函数接收一个命令字符串,`shell=True`参数使得命令在shell环境下执行,而`stdout`和`stderr`则用于捕获命令的输出和错误信息。 例如,获取Redis中某个键的值可以这样实现: ```python def get_redis_value...

    Jedis接口分类说明

    字符串数据类型在Redis中是最基本的存储类型,它可以存储任何二进制安全的数据,包括图像、JSON对象等,最大容量可达512MB。以下是一些重要的Jedis接口方法: 1. **set(String key, String value)**: 这个方法用于...

Global site tag (gtag.js) - Google Analytics