可以进行所有的操作 private RedisTemplateObject

时间:2021-07-18 03:48:48

Redis(REmote DIctionary Server)是一个由Salvatore Sanfilippo写的key-value存储系统。

Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、撑持网络、可基于内存亦可长期化的日志型、Key-Value数据库,并供给多种语言的API。

它凡是被称为数据布局处事器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 调集(sets) 和 有序调集(sorted sets)等类型。

Redis下载地点:https://github.com/MSOpenTech/redis/releases。

按照你系统平台的实际情况选择对应的版本,例如:windows环境下可以下载 Redis-x64-xxx.zip版本,解压到 C 盘并从头定名文件夹为 redis即可使用(例如:c:\redis)。

启动处事端 - 打开cmd窗口将路径切换到c:\redis下,,输入命令:redis-server.exe redis.windows.conf  启动redis处事端。

如需启动客户端 - 此外打开一个cmd窗口并将路径切换到c:\redis下,输入命令: redis-cli.exe -h 127.0.0.1 -p 6379 则客户端启动,我们可以再客户端通过redis命令使用。

例如:

设置键值对 set firstKey hello

取出键值对 get firstKey

Redis在Java中作为缓存,常见操纵共用要领列举:

import java.util.concurrent.TimeUnit; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.stereotype.Component; @Component public class RedisSentinelUtil { @Autowired //操纵字符串的template,StringRedisTemplate是RedisTemplate的一个子集 private StringRedisTemplate stringRedisTemplate; @Autowired // RedisTemplate,可以进行所有的操纵 private RedisTemplate<Object,Object> redisTemplate; public void setCachesData(byte[] key, Object value){ redisTemplate.opsForValue().set(key, value); } /** * 设值并设置掉效时间 * @param key 需生存的key * @param value 需生存的值 * @param timeOut 掉效时间 * @return */ public void setCachesData(byte[] key, Object value,int timeOut){ redisTemplate.opsForValue().set(key, SerializaUtil.serialize(value),timeOut,TimeUnit.SECONDS); } public void setCachesData(String key, String value){ stringRedisTemplate.opsForValue().set(key, value); } public boolean setnx(String key, String value){ return stringRedisTemplate.opsForValue().setIfAbsent(key, value); } public void setCachesData(String key, String value,int timeOut){ ValueOperations<String, String> ops = this.stringRedisTemplate.opsForValue(); boolean bExistent = this.stringRedisTemplate.hasKey(key); if (bExistent) { System.out.println("this key is bExistent!"); }else{ ops.set(key, value, timeOut,TimeUnit.SECONDS); } } /** * key是否存在 * @param key 需验证的key * @return 是否 */ public Boolean isExistsKey(String key){ return stringRedisTemplate.hasKey(key); } /** * key是否存在 * @param key 需验证的key * @return 是否 */ public Boolean isExistsKey(byte[] key){ return redisTemplate.hasKey(key); } /** * 掉效 * * @param key 生存的key * @param seconds 秒 */ public Boolean setxpireData(String key, int seconds){ return stringRedisTemplate.expire(key, seconds,TimeUnit.SECONDS); } /** * 掉效 * @param key 生存的key * @param seconds 秒 */ public Boolean setxpireData(byte[] key, int seconds){ return redisTemplate.expire(key, seconds,TimeUnit.SECONDS); } /** * 从缓存中获取数据 * @param key * @return */ public String getValue(String key) { if (key == null) return ""; String v = stringRedisTemplate.opsForValue().get(key); return (v == null) ? "" : v; } /** * 从缓存中获取数据 * @param key * @return */ public String[] getValues(String key) { if (key == null) return null; if(stringRedisTemplate.opsForValue().get(key)!=null){ String[] s = stringRedisTemplate.opsForValue().get(key).split(","); if (null!=s && s.length>0) return s; } return null; } /** * 从缓存中获取数据 * @param key * @return */ public Object getValue(byte[] key) { return redisTemplate.opsForValue().get(key); } /** * 从缓存中删除数据 * @param key * @return */ public void removeValue(String key) { stringRedisTemplate.delete(key); } /** * 从缓存中删除数据 * @param key * @return */ public void removeValue(byte[] key) { redisTemplate.delete(key); } }