网站怎么做防御,中国价格信息网,上海网站推广优化,虚拟空间下载官方版Redis 的介绍
Redis#xff08;Remote Dictionary Server#xff09;是一个开源的内存数据结构存储系统#xff0c;它被广泛地应用于缓存、计数器、限速器、消息队列、分布式锁等多种场景中。Redis 支持多种数据结构#xff0c;包括字符串、散列、列表、集合和有序集合等Remote Dictionary Server是一个开源的内存数据结构存储系统它被广泛地应用于缓存、计数器、限速器、消息队列、分布式锁等多种场景中。Redis 支持多种数据结构包括字符串、散列、列表、集合和有序集合等并且具有高性能、高可用性、持久化以及丰富的特性在企业级应用中逐渐成为关键的一环。
Redis 的应用场景
Redis 在企业应用中的应用场景十分广泛
缓存Redis 可以作为一种高速缓存将一些经常访问但不经常变化的数据缓存到内存中加快数据读取速度。计数器Redis 可以处理计数器功能可以方便地实现有序集合的排名、粉丝量统计等功能。限速器利用 Redis 的计数器功能可以对请求进行限速避免过多的请求造成系统崩溃。分布式锁通过 Redis 的原子操作和持久化特性可以实现分布式锁避免多个进程同时修改同一数据带来的问题。消息队列Redis 提供了 Pub/Sub 机制可以实现分布式环境下的消息传递机制例如个推、金融交易等。数据库Redis 可以作为数据库使用具有快速响应、持久化数据等特点。负载均衡利用 Redis 的 Cluster 特性可以实现负载均衡避免服务器出现过快或过慢的现象。
Redis 的数据类型
Redis 支持的数据类型具有丰富的特性和严格的限制可以满足各种不同数据场景的需求。
String字符串类型是 Redis 最基本的数据类型可以存储任意类型的字符串包括二进制数据。List列表类型是一种有序的元素集合支持从头部或尾部添加或删除元素支持获取某个元素的值。Hash散列类型是 Redis 中用来表示对象的数据结构每个键值对存储一个子对象适合存储较为复杂的数据结构。Set集合类型是 Redis 中提供了无序元素的集合一个键值对可以包含多个元素且元素不能重复适合存储无序相关元素的数据结构。Sorted Set有序集合类型是 Redis 中提供了具有排序功能的集合类型一个键值对可以包含多个元素且元素不能重复适合存储有关联属性或有序相关元素的数据结构。
SpringBoot 整合 Redis
下面我们结合一个简单的项目通过 StringRedisTemplate 来演示各个数据类型的例子。
在 pom.xml 文件中加入如下依赖
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId
/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId
/dependency在 application.properties 文件中加入如下设置
# Redis 数据库
spring.redis.database0
# Redis 服务器的地址和端口号
spring.redis.hostlocalhost
spring.redis.port6379
# Redis 访问密码如果没有设置密码可不填
spring.redis.password在 src/main/java/com/example/demo 目录下新建一个 RedisController 类并添加如下注解
RestController
public class RedisController {...
}存储 String 类型数据
在 RedisController 类中添加以下依赖注入
Autowired
private StringRedisTemplate stringRedisTemplate;在 RedisController 中添加一个简单的 String 类型接口用于存储和获取字符串类型数据
GetMapping(/redis/setString)
public String setString() {String key name;String value Redis;stringRedisTemplate.opsForValue().set(key, value);return set success;
}GetMapping(/redis/getString)
public String getString() {String key name;String value stringRedisTemplate.opsForValue().get(key);return get value value;
}存储 List 类型数据
在 RedisController 类中添加以下依赖注入
Autowired
private RedisTemplateString, Object redisTemplate;在 RedisController 中添加一个 List 类型的接口用于存储和获取 List 类型数据
GetMapping(/redis/setList)
public String setList() {String key list;ListString values Arrays.asList(Redis, Java, Python);redisTemplate.opsForList().rightPushAll(key, values);return set success;
}GetMapping(/redis/getList)
public ListString getList() {String key list;ListString values redisTemplate.opsForList().range(key, 0, -1);return values;
}存储 Hash 类型数据
在 RedisController 类中添加以下依赖注入
Autowired
private StringRedisTemplate stringRedisTemplate;在 RedisController 中添加一个 Hash 类型的接口用于存储和获取 Hash 类型数据
GetMapping(/redis/setHash)
public String setHash() {String key user;stringRedisTemplate.opsForHash().put(key, name, Redis);stringRedisTemplate.opsForHash().put(key, age, 18);return set success;
}GetMapping(/redis/getHash)
public MapString, String getHash() {String key user;MapString, String result stringRedisTemplate.opsForHash().entries(key);return result;
}存储 Set 类型数据
在 RedisController 类中添加以下依赖注入
Autowired
private StringRedisTemplate stringRedisTemplate;在 RedisController 中添加一个 Set 类型的接口用于存储和获取 Set 类型数据
GetMapping(/redis/setSet)
public String setSet() {String key set;stringRedisTemplate.opsForSet().add(key, Redis, Java, Python);return set success;
}GetMapping(/redis/getSet)
public SetString getSet() {String key set;SetString result stringRedisTemplate.opsForSet().members(key);return result;
}存储 Sorted Set 类型数据
在 RedisController 类中添加以下依赖注入
Autowired
private StringRedisTemplate stringRedisTemplate;在 RedisController 中添加一个 Sorted Set 类型的接口用于存储和获取 Sorted Set 类型数据
GetMapping(/redis/setSortedSet)
public String setSortedSet() {String key sortedSet;SetZSetOperations.TypedTupleString 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 set success;
}GetMapping(/redis/getSortedSet)
public SetString getSortedSet() {String key sortedSet;SetString result stringRedisTemplate.opsForZSet().range(key, 0, -1);return result;
}运行 SpringBoot 项目在浏览器中访问以上接口可以看到相应的数据类型存储和获取效果。
总结
Redis 是一个非常优秀的内存数据结构存储系统具有高可用性、高性能、持久化和支持多种数据结构等特点在大数据领域得到了广泛应用。同时使用 SpringBoot 也可以快速地实现 Redis 的使用并且 StringRedisTemplate 提供了丰富的 API可以方便地操作 Redis 中的数据。各个数据类型的实现需要根据具体业务场景而定可以根据需要自由地选择数据结构和使用方式。
关注微信公众号“小虎哥的技术博客”。我们会定期发布关于Java技术的详尽文章让您能够深入了解该领域的各种技巧和方法让我们一起成为更优秀的程序员
相关文章源码放在gitee仓库、github仓库上。