Redis的列表List中添加数据时,具有“先进先出”的特性,即所谓的“FIFO”(有点队列Queue的特性!),而且数据是紧凑、一个挨着一个存储的!
当我们在往缓存Redis的列表List添加数据时,可以采用“LPush 即从左边的方向添加”的方式往缓存Redis的List中添加,然后再采用“LPop 即从左边的方向弹出数据”或者“RPop 即从右边的方向弹出数据”的方式获取这一有序存储的列表数据!
电商平台~商家添加/下架商品时如何将其商品列表有序存储至缓存Redis的List中,每次获取商家当前的商品列表时可以直接从缓存中读取,减少每个商家在每次登陆之后都需要走数据库DB频繁查询 所带来的压力!
产品信息表
CREATE TABLE `product` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8mb4 NOT NULL COMMENT '商品名称',
`user_id` int(11) NOT NULL COMMENT '所属商户id',
`scan_total` int(255) DEFAULT NULL COMMENT '浏览量',
`is_active` tinyint(255) DEFAULT '1' COMMENT '是否有效',
PRIMARY KEY (`id`),
KEY `indx_scan_total` (`scan_total`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商户商品表';
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
redis是什么:开源的基于键值对的存储服务系统。拥有多种数据结构,高性能,功能丰富
redis特性:
速度快,10w OPS 内存
持久化,将数据的更新异步的保存在磁盘上
多种数据结构,字符串、hash、列表、集合、有序集合 延伸到位图
支持多种编程语言。
功能丰富,–发布订阅 LUA脚本 事务 pipeline(并发效率)“ 瑞士军刀”
简单, –不依赖外部库 单线程模型
主从复制(重要)
高可用,分布式(重点)
v2.8开始支持Redis-Sentinel(哨兵)高可用
v3.0开始支持Redis-Cluster 分布式
redis典型应用场景:
缓存系统
计数器
消息队列系统
排行榜
社交系统
实时系统