SpringBoot 整合Redis缓存(上)

Redis介绍

Redis是一个开源的,内存存储的数据结构服务器,可以用作数据库来存储Key-Value数据,它支持字符串、哈希表、列表、集合、有序集合、位图、地理空间信息等数据类型,同时也可以作为高速缓存和消息队列代理。

Redis和其他的NoSQL数据库相比,独特性在于支持复杂的数据结构,这些数据结构通常都与程序的数据结构一致。

Redis在内存中存储数据,因此原则上,存放在Redis中的数据不应该大于内存容量,否则会因为操作系统的虚拟内存导致性能降低。

Redis的应用场景

  • 缓存热数据,所谓热数据,就是经常被查询的但是基本上不会被修改的数据,首选的那肯定是redis来进行缓存。从而减轻数据库的压力,用户每次访问都将访问Redis缓存数据库,而不是进行类似的select ....查询。

  • 计数器,注入统计访问数量,点击次数,Redis单线程的特性可以有效地避免并发问题,保证不会出错。

  • 队列,相当于消息队列,类似ActiveMQ,RocketMQ等,当然如果对数据一致性要求高还是使用ActiveMQ,RocketMQ等专业性架构。由于Redis把数据天津爱到队列是返回添加元素在队列的第几位,所以可以做出判断:当前用户是第几个访问这个业务的。队列不仅仅可以把并发请求转变为串行,并且还可以做队列或者栈使用。

  • 位操作,这个在大数据处理的范畴,用于数据量上亿的场景下,例如几亿用户系统的签到,去重登录次数统计,某用户的在线状态等等,Redis内构件一个足够场的数组,每个数组元素只能是0和1两个值,然后这个数组的下表index用来表示我们上面例子里面的用户id,那么显然,这个几亿场的大数组就能通过下标和元素值来构件一个记忆系统,使用到的命令:setbit \ getbit \ bitcount

  • 分布式锁和单线程机制,验证前端的重复请求,可以通过Redis进行过滤:每次请求将ip、参数、接口等hash作为key存储到redis中,设置一个有效期,然后下次请求的时候现在redis中查询有没有这个key,进而验证是不是一定时间内的重复提交。秒杀系统,基于redis是单线程特征,防止出现数据库"爆破"

  • 最新列表,例如新闻列表页面的最新新闻列表,热点新闻等等,同热数据

  • 排行榜,同热数据,定时缓存到redis中。

安装Redis

Windows下安装

在目录中打开CMD窗口并且执行如下命令

redis-server.exe redis.windows.conf

启动成功后打开另一个CMD窗口执行

redis-cli.exe -h 127.0.0.1 -p 6379

成功进行连接

Linux下安装

在终端中进行下载/解压/编译

$ wget http://download.redis.io/releases/redis-5.0.4.tar.gz
$ tar xzf redis-5.0.4.tar.gz
$ cd redis-5.0.4
$ make

编译完成后运行

$ src/redis-server

你能使用Redis的内置客户端进行进行redis代码的编写:

$ src/redis-cli
redis> set foo bar
OK
redis> get foo
"bar"

附上Redis教程

云Redis数据库

那么线上环境也推荐使用阿里云出品的云数据库Redis版


本作品采用知识共享署名 4.0 国际许可协议进行许可。

如果可以的话,请给我钱请给我点赞赏,小小心意即可!

Last modification:September 12, 2019
If you think my article is useful to you, please feel free to appreciate