此项目下载地址:https://git.oschina.net/z77z/springboot_mybatisplus
Redis的特性
Strings:Strings 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字.
常用命令: set,get,decr,incr,mget 等。
常用方法:- 获取字符串长度
- 往字符串append内容
- 设置和获取字符串的某一段内容
- 设置及获取字符串的某一位(bit)
- 批量设置一系列字符串的内容
Hashs:Redis Hash对应Value内部实际就是一个HashMap,常用命令:hget,hset,hgetall 等。
Lists:Redis list的实现为一个双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销,Redis内部的很多实现,包括发送缓冲队列等也都是用的这个数据结构。
常用命令:lpush,rpush,lpop,rpop,lrange等。Sets:Sets 集合的概念就是一堆不重复值的组合。Redis还为集合提供了求交集、并集、差集等操作,可以非常方便的实现如共同关注、共同喜好、二度好友等功能。
常用命令:sadd,spop,smembers,sunion 等。Sorted Sets:Redis sorted set的使用场景与set类似,区别是set不是自动有序的。sorted set可以通过用户额外提供一个优先级(score)的参数来为成员排序,并且是插入有序的,即自动排序。
常用命令:zadd,zrange,zrem,zcard等
下面就根据这几个特性,也就是Redis支持的数据类型,来完成以下场景的实现。
场景一:简单计数功能
Redis是一个很好的计数器,计数器是 Redis 的原子性自增操作可实现的最直观的模式了,它的想法相当简单:每当某个操作发生时,向 Redis 发送一个 INCR 命令。使用场景比如网站的访问数,注册用户数,文章的点赞数,高并发的秒杀活动,分布式序列号生成等等统计计数的功能实现。Redis 解决这类计数问题得心应手,相比关系数据库速度更快,消耗资源更少。还可以通过set()方法来重置计数。
// 简单计数
@Test
public void test1() {
try {
ValueOperations<String, String> opsForValue = stringRedisTemplate.opsForValue();
//计数前打印
System.out.println(opsForValue.get("test1"));
for (int i = 0; i < 100; i++) {
//计数,第一个参数为key值,第二个参数为每次增加计数的单位
opsForValue.increment("test1", 1);
}
//计数后打印
System.out.println(opsForValue.get("test1"));
} catch (Exception e) {
e.printStackTrace();