1.
导入所需的依赖包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
application.yml配置:
spring:
redis:
database: 7 # Redis数据库索引(默认为0)
host: localhost # Redis服务器地址
password: # Redis服务器连接密码(默认为空)
port: 6379 # Redis服务器连接端口
timeout: 10000 # 连接空闲超过N(s秒、ms毫秒)后关闭,0为禁用,这里配置值和tcp-keepalive值一致
# 默认使用 lettuce 连接池
lettuce:
pool:
max-active: 8 # 允许最大连接数,默认8(负值表示没有限制)
max-idle: 8 # 最大空闲连接数,默认8
max-wait: 5s # 连接用完时,新的请求等待时间(s秒、ms毫秒),超过该时间抛出异常JedisConnectionException,(默认-1,负值表示没有限制)
min-idle: 0 # 最小空闲连接数,默认0
Controller控制器:通过注解Resource注入
StringRedisTemplate和RedisTemplate<String,Object>
@Resource
private StringRedisTemplate stringRedisTemplate; // String --> Redis
@Resource
private RedisTemplate<String,Object> redisTemplate;//Redis-->String/Set/Hash/ZSet
测试接口
@GetMapping("setString")
public CommonResult setString(String key,String value,long timeout){
stringRedisTemplate.opsForValue().set(
"user"+key,
value,
timeout,
TimeUnit.SECONDS);
return CommonResult.success("成功将数据添加到Redis");
}
@GetMapping("getString")
public CommonResult getString(String key){
key = "user" + key;
final String value = stringRedisTemplate.opsForValue().get(key);
return CommonResult.success("查询成功",value);
}
@GetMapping("/setList")
public CommonResult setList(){
String key = "list";
List<String> values = Arrays.asList("Redis","Java","Python");
redisTemplate.opsForList().rightPushAll(key,values);
return CommonResult.success("成功");
}
@GetMapping("/getList")
public List<Object> getList(){
String key = "list";
List<Object> values = redisTemplate.opsForList().range(key,0,-1);
return values;
}
@GetMapping("/redis/setHash")
public CommonResult setHash(){
String key = "user";
stringRedisTemplate.opsForHash().put(key,"name","Redis");
stringRedisTemplate.opsForHash().put(key,"age","18");
return CommonResult.success("成功");
}
@GetMapping("/redis/getHash")
public Map<Object,Object>getHase(){
String key = "user";
Map<Object,Object> result = stringRedisTemplate.opsForHash().entries(key);
return result;
}
@GetMapping("/redis/setSet")
public CommonResult setSet(){
String key = "set";
stringRedisTemplate.opsForSet().add(key,"Redis","Java","Python");
return CommonResult.success("成功");
}
@GetMapping("/redis/getSet")
public Set<String> getSet(){
String key = "set";
Set<String> result = stringRedisTemplate.opsForSet().members(key);
return result;
}
@GetMapping("/redis/setSortedSet")
public CommonResult setSortedSet(){
String key = "sortedSet";
Set<ZSetOperations.TypedTuple<String>> values = new HashSet<>();
values.add(new DefaultTypedTuple<>("Redis",1D));
values.add(new DefaultTypedTuple<>("Java",2D));
values.add(new DefaultTypedTuple<>("Python",3D));
stringRedisTemplate.opsForZSet().add(key,values);
return CommonResult.success("成功");
}
@GetMapping("/redis/getSortedSet")
public Set<String> getSortedSet(){
String key = "sortedSet";
Set<String> result = stringRedisTemplate.opsForZSet().range(key,0,-1);
return result;
}
可以查看你的Redis数据库是否插入数据
总结:Redis 是一个非常优秀的内存数据结构存储系统,具有高可用性、高性能、持久化和支持多种数据结构等特点,在大数据领域得到了广泛应用。同时,使用 SpringBoot 也可以快速地实现 Redis 的使用,并且 StringRedisTemplate 提供了丰富的 API,可以方便地操作 Redis 中的数据。各个数据类型的实现需要根据具体业务场景而定,可以根据需要自由地选择数据结构和使用方式。
Redis常见的五大数据类型
String(字符串)、List(列表)、Set(集合)、Hash(散列)、ZSet(有序集合)
stringRedisTemplate.opsForValue()[操作String(字符串)]
stringRedisTemplate.opsForList()[操作List(列表)]
stringRedisTemplate.opsForSet()[操作Set(集合)]
stringRedisTemplate.opsForHash()[操作Hash(散列)]
stringRedisTemplate.opsForZSet()[操作ZSet(有序集合)]
Redis常用数据类型可以用到的场景:
redis 常用数据类型使用场景:
String:存短信验证码、缓存、计数器、分布式session
List:发布订阅等
Set:共同好友、点赞或点踩等
Hash:存储对象
Zset:排行榜
HyperLogLog:在线用户数、统计访问量等
GeoHash:同城的人、同城的店等
BitMap:签到打卡、活跃用户等