目录
redis简介
下载地址
配置说明
测试启动
设置redis的密码
配置可视化工具
数据类型
1.String:字符串类型
2.List:列表类型
3.Set:无序集合类型
4.ZSet:有序集合类型
5.Hash:哈希表类型
redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库。
Releases · microsoftarchive/redis (github.com)
把 Redis 下载下来后找到一个合适的地方解压,就能得到如下图所示的目录
redis.windows.conf 配置文件
port 6379 # 监听端口号,默认为 6379,如果你设为 0 ,redis 将不在 socket 上监听任何客户端连接。
daemonize no #是否以后台进程启动
databases 16 #创建database的数量(默认选中的是database 0)
save 900 1 #刷新快照到硬盘中,必须满足两者要求才会触发,即900秒之后至少1个关键字发生变化。
save 300 10 #必须是300秒之后至少10个关键字发生变化。
save 60 10000 #必须是60秒之后至少10000个关键字发生变化。
如果默认的127.0.0.1的话,启动存在外部无法访问的问题。可以编辑redis.conf配置文件,将bind绑定的地址修改为服务器的地址
redis-server.exe 服务程序,双击启动服务
如果将Redis作成Windows的服务:
redis-server.exe --service-install redis.windows.conf
卸载服务:redis-server --service-uninstall
开启服务:redis-server --service-start
停止服务:redis-server --service-stop
重命名服务:redis-server --service-name name
重命名服务应该是要停止服务以后才能执行
redis-cli.exe 自带客户端redis-cli.exe检测。双击,连接成功。
另外方式:打开cmd窗口,输入redis-cli.exe -h 127.0.0.1 -p 6379后回车,出现下面情况说明redis安装且连接成功
这一步可以设置也可以不设置,设置了记得在项目里需要配置redis的密码
a、输入config get requirepass查看密码(没有设置的话返回的密码为空)
b、设置密码为123456,输入config set requirepass 123456后回车即设置成功
c、除去密码,直接输入config set requirepass ‘’,即将密码设置为空
d、有密码时的登录方式
第一种:redis-cli.exe -h 127.0.0.1 -p 6379 -a 123456
Another Redis Desktop Manager
软件内部界面
Redis的五种数据结构包括以下五种:
1.String
:字符串类型redis的字符串类型,可以存储字符串、整数或者浮点数。如果存储的是整数或者浮点数,还能执行自增或者自减操作。
应用场景:
1. Redis的数据是共享的
如果将用户信息存储在web服务的本地缓存,则每个web服务都会缓存一份,当用户修改昵称时,需要通知其它web服务更新用户缓存。
如果将用户信息存储在Redis,则只有一份缓存,所有的web访问的都是同一份缓存,当用户修改昵称时,所有web服务都能同时访问到最新的缓存。
2. Redis是单线程的
由于Redis的性能瓶颈在于内存读写速度,而不是CPU,设计者将Redis设计成了单线程模式,其所有操作都是原子性的,避免了多线程带来的复杂性。
基于以上两点特性,Redis的string类型主要有以下应用场景。
1. 计数器,string类型的incr和decr命令的作用是将key中储存的数字值加一/减一,这两个操作具有原子性,总能安全地进行加减操作,因此可以用string类型进行计数,如微博的评论数、点赞数、分享数,抖音作品的收藏数,京东商品的销售量、评价数等。
2. 分布式锁,string类型的setnx的作用是“当key不存在时,设值并返回1,当key已经存在时,不设值并返回0”,“判断key是否存在”和“设值”两个操作是原子性地执行的,因此可以用string类型作为分布式锁,返回1表示获得锁,返回0表示没有获得锁。
2.List
:列表类型Redis的列表类型和许多程序语言中的列表类型类似,可以有序的存储多个字符串。支持从列表的左端和右端推入或弹出元素。
list类型是简单的字符串列表,按照插入顺序排序。每个列表最多可以存储 232 - 1 个元素(40多亿) ,list类型主要有以下应用场景。。
1. 消息队列,list类型的lpop和rpush(或者反过来,lpush和rpop)能实现队列的功能,故而可以用Redis的list类型实现简单的点对点的消息队列。不过我不推荐在实战中这么使用,因为现在已经有Kafka、NSQ、RabbitMQ等成熟的消息队列了,它们的功能已经很完善了,除非是为了更深入地理解消息队列,不然我觉得没必要去重复造轮子。
2. 排行榜,list类型的lrange命令可以分页查看队列中的数据。可将每隔一段时间计算一次的排行榜存储在list类型中,如京东每日的手机销量排行、学校每次月考学生的成绩排名、斗鱼年终盛典主播排名等
3.Set
:无序集合类型Redis的集合以无序的方式存储多个不同的元素。这里要注意的是无序和不同。
除了对集合能快速执行添加、删除、检查一个元素是否在集合中之外,还可以对多个集合执行交集、并集和差集运算。
set类型是string类型的集合,其特点是集合元素无序且不重复,每个集合最多可以存储 232 - 1 个元素(40多亿),set类型主要有以下应用场景。
1. 好友/关注/粉丝/感兴趣的人集合,set类型唯一的特点使得其适合用于存储好友/关注/粉丝/感兴趣的人集合
2. 随机展示,通常,app首页的展示区域有限,但是又不能总是展示固定的内容,一种做法是先确定一批需要展示的内容,再从中随机获取。
3. 黑名单/白名单,经常有业务出于安全性方面的考虑,需要设置用户黑名单、ip黑名单、设备黑名单等,set类型适合存储这些黑名单数据,sismember命令可用于判断用户、ip、设备是否处于黑名单之中。
4.ZSet
:有序集合类型使用分值,有序集合里存储这成员与分值之间的映射,并提供了分值处理命令,以及根据分值的大小有序地获取成员或分值的命令。
1.延时队列,zset 会按 score 进行排序,如果 score 代表想要执行时间的时间戳。在某个时间将它插入 zset 集合中,它变会按照时间戳大小进行排序,也就是对执行时间前后进行排序。
2.排行榜,经常浏览技术社区的话,应该对 “1小时最热门” 这类榜单不陌生。如何实现呢?如果记录在数据库中,不太容易对实时统计数据做区分。我们以当前小时的时间戳作为 zset 的 key,把贴子ID 作为 member ,点击数评论数等作为 score,当 score 发生变化时更新 score。利用 ZREVRANGE 或者 ZRANGE 查到对应数量的记录。
5.Hash
:哈希表类型Redis的hash类型其实就是一个缩减版的redis。它存储的是键值对,将多个键值对存储到一个redis键里面
1. 购物车,以用户id为key,商品id为field,商品数量为value,恰好构成了购物车的3个要素
Redis实战 | 5种Redis数据类型详解 - 掘金 (juejin.cn)