当前位置: 代码迷 >> 综合 >> SpringBoot2.X redis 之 StringRedisTemplate 和 RedisTemplate
  详细解决方案

SpringBoot2.X redis 之 StringRedisTemplate 和 RedisTemplate

热度:13   发布时间:2024-02-29 09:21:15.0

1.首先说一下,在项目中 秒杀商品 采取redis存储秒杀商品信息

Redis数据库是一个完全开源免费的高性能Key-Value数据库。它支持存储的value类型有五种,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)

Redis非常快,每秒可执行大约110000次的设置(SET)操作,每秒大约可执行81000次的读取/获取(GET)操作。

2.配置

Maven

		<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><exclusions><exclusion><groupId>io.lettuce</groupId><artifactId>lettuce-core</artifactId></exclusion></exclusions></dependency><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId></dependency>

properties文件

spring.redis.host=192.168.1.189
spring.redis.port=6379
spring.session.store-type=redis

//在业务代码中注入使用即可
@Autowired
StringRedisTemplate redisTemplate;

3. StringRedisTemplate

我们可以看到
我们可以看到StringRedisTemplate 继承了RedisTemplate 并且使用了RedisSerializer 序列化
StringRedisTemplate默认采用的是String的序列化策略,保存的key和value都是采用此策略序列化保存的。

接下来讲一下 BoundHashOperations ----- 在redis存储秒杀商品 以map的结构存储

首先要定义一个BoundHashOperations

BoundHashOperations<String, String, Object> boundHashOperations = redisTemplate.boundHashOps("li");  

1、put(HK key, HV value)
新增元素到指定键中

boundHashOperations.put("ww","i");  
boundHashOperations.put("w1","i1");  
boundHashOperations.put("w2","i2");  

2、getKey()

获取指定键中的值
//获取设置的绑定key值

System.out.println("获取设置的绑定key值:" + boundHashOperations.getKey());  

3、values()

获取map中的值jdk要求1.8及以上

//获取map中的value值

boundHashOperations.values().forEach(v -> System.out.println("获取map中的value值" + v));  

4、entries()

 获取map中的键值对

//获取map键值对

boundHashOperations.entries().forEach((m,n) -> System.out.println("获取map键值对:" + m + "-" + n));  

5、get(Object member)

获取map键中的值

//获取map键的值

System.out.println("获取map建的值:" + boundHashOperations.get("w1"));  

6、keys()

获取map的键
//获取map的键

boundHashOperations.keys().forEach(v -> System.out.println("获取map的键:" + v));  

7、multiGet(Collection keys)

根据map键批量获取map值
//根据map键批量获取map值

List list = new ArrayList<>(Arrays.asList("ww","w1"));  
boundHashOperations.multiGet(list).forEach(v -> System.out.println("根据map键批量获取map值:" + v));  

8、putAll(Map<? extends HK,? extends HV> m)

批量添加键值对

//批量添加键值对 
Map map = new HashMap<>();  
map.put("m1","n1");  
map.put("m2","n2");  
boundHashOperations.putAll(map);  
boundHashOperations.entries().forEach((m,n) -> System.out.println("批量添加键值对:" + m + "-" + n));  

9、increment(HK key, long delta)

自增长map键的值

Java代码 收藏代码
//自增长map键的值
boundHashOperations.increment(“c”,1);
System.out.println(“自增长map键的值:” + boundHashOperations.get(“c”));
10、putIfAbsent(HK key, HV value)

添加不存在的map键
//如果map键不存在,则新增,存在,则不变

boundHashOperations.putIfAbsent("m2","n2-1");  
boundHashOperations.putIfAbsent("m3","n3");  
boundHashOperations.entries().forEach((m,n) -> System.out.println("新增不存在的键值对:" + m + "-" + n));  

11、size()

获取特定键对应的map大小
//查看绑定建的map大小

System.out.println("查看绑定建的map大小:" + boundHashOperations.size());  

12、scan(ScanOptions options)

扫描特定键所有值

//遍历绑定键获取所有值

Cursor<Map.Entry<String, Object>> cursor = boundHashOperations.scan(ScanOptions.NONE);  
while (cursor.hasNext()){
      Map.Entry<String, Object> entry = cursor.next();  System.out.println("遍历绑定键获取所有值:" + entry.getKey() + "---" + entry.getValue());  }  

13、delete(Object… keys)

批量删除map值

long delSize = boundHashOperations.delete("m3","m2");  
System.out.println("删除的键的个数:" + delSize);  
boundHashOperations.entries().forEach((m,n) -> System.out.println("删除后剩余map键值对:" + m + "-" + n));  

参考文章:https://www.iteye.com/blog/357029540-2398599 作者这一块写的不错 值得参考