文章目录
- 一、Redis 介绍
- 1.1 Redis 的应用场景
- 1.2 Redis 的特点
- 二、Windows版Redis安装
- 三、Redis Desktop Manager安装
- 四、Redis 常用基本操作
- 4.1 查看操作
- 4.2 操作string类型的命令
- 4.2.1 设置获取Key
- 4.2.2 MSET(Multi)支持批量设置key、MGET支持批量获取key
- 4.2.3 设置一个key,并指定过期时间
- 4.2.4 使用INCR来进行累加操作
- 4.3 操作hash类型的命令
- 4.3.1 设置Hash的指定字段
- 4.3.2 将Hash的字段获取
- 4.3.3 获取Hash中所有的key
- 4.3.4 获取Hash中所有的key和value
- 4.3.5 删除命令
- 4.4 操作list类型的命令
- 4.4.1 push往列表的头部插入数据
- 4.4.2 range表示取指定范围的元素(0--1表示获取数据的元素)
- 4.5 操作SET类型的命令
- 4.5.1 添加元素
- 4.5.2 获取所有的元素
- 4.5.3 获取元素的个数
- 4.6 针对key的操作命令
- 4.6.1 删除一个key,对应的数据结构
- 4.6.2 判断set_test这个key是否存在
- 4.6.3 给key设置过期时间
- 4.7 针对ZSET(有序SET)的操作命令
- 4.7.1 向ZSet中添加页面的PV值
- 4.7.2 获取有序集合的成员数
- 4.7.3 有序集合中对指定成员的分数加上增量
- 4.7.4 计算给定多个有序集的交集
- 4.7.5 获取ZSET中的所有成员
- 4.7.6 获取有序集合中指定成员的索引
- 4.7.7 将有序集成员按分数值递减(从大到小)排序
一、Redis 介绍
Redis是一个NoSQL、基于Key-value键值对的存储引擎;( Not Relational(非关系型):没有对SQL支持、不能去建立表与表的关系;)
1.1 Redis 的应用场景
- 计数器
- TopN、排行榜(微博的热搜榜、热门话题、抖音直播间的热门直播间、淘宝电商的排行榜)
- 去重的计数
- 实时系统,用于存储一些规则
- 定时过期的一些应用(短信验证码)
- 缓存(保护数据库不被高并发压垮)
1.2 Redis 的特点
- 速度非常快,单机能够支持的并发、读写的速度达10W以上(Kafka更快——80W-150W)
- 支持多种数据结构类型,操作非常灵活
- string(字符串)
- list(列表)
- set(集合)
- hash(哈希)
- zset(有序集合)
- …
二、Windows版Redis安装
Windows版的安装,解压Redis压缩包即安装完毕,有以下几个需要注意的安装事项:
- 1)解压的目录不要有中文名称;
- 2)目录结构层次不要嵌套太深;
- 3)硬盘空间剩余空间最少要大于内存空间,建议20G以上;
可以在官网下载,也可以在此 安装包 地址处下载,Redis 服务启动与关闭如下:
1)、启动服务器:直接执行redis-server.exe
文件,默认端口号:6379
2)、关闭服务器:直接关闭窗口
三、Redis Desktop Manager安装
一款跨平台Redis桌面管理软件,支持:Windows 7+、Mac OS X 10.10+、 Ubuntu 14+等系统,响应迅速快,性能好。Redis Desktop Manager下载地址
安装时一直下一步,安装完客户端后,连接本地Redis服务:
四、Redis 常用基本操作
如果在 windows 系统中,想通过 cmd窗口
操作常用基本操作,可按照如下步骤操作:
1)、找到安装 Redis 的目录,双击运行 redis-cli.exe
应用程序;
2)、在打开的 cmd窗口
执行常用基本操作命令;
3)、执行后的命令内容,也可在 Redis桌面管理软件(Redis Desktop Manager)中对应查看;
4.1 查看操作
以下命令需谨慎使用(测试时候可以用,正式上线慎用),因为当缓存比较多的时候,会很消耗内存会影响效率。
keys *
4.2 操作string类型的命令
4.2.1 设置获取Key
# SET key value 设置指定 key 的值
SET data 12323
# GET key 获取指定 key 的值
GET data
4.2.2 MSET(Multi)支持批量设置key、MGET支持批量获取key
# MGET key1 [key2..] 获取所有(一个或多个)给定 key 的值
MSET hello1 world1 hello2 world2
MGET hello1 hello2
4.2.3 设置一个key,并指定过期时间
# SETEX key seconds value 将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)
SETEX hello3 5 world
4.2.4 使用INCR来进行累加操作
# SETNX key value 只有在 key 不存在时设置 key 的值
SET PV 1
# INCR key 将 key 中储存的数字值增一
INCR PV
4.3 操作hash类型的命令
4.3.1 设置Hash的指定字段
记住:大key(例如:userinfo)、小key(例如:userid)
# HSET key field value 将哈希表 key 中的字段 field 的值设为 value
HSET userinfo userid 1
# HMSET key field1 value1 [field2 value2 ] 同时将多个 field-value (域-值)对设置到哈希表 key 中
HSET userinfo username zhangsan
4.3.2 将Hash的字段获取
# HGET key field 获取存储在哈希表中指定字段的值
HGET userinfo userid
4.3.3 获取Hash中所有的key
# HKEYS key 获取所有哈希表中的字段
HKEYS userinfo
4.3.4 获取Hash中所有的key和value
# HGETALL key 获取在哈希表中指定 key 的所有字段和值
HGETALL userinfo
4.3.5 删除命令
# HDEL key field1 [field2] 删除一个或多个哈希表字段
HDEL userinfo userid
4.4 操作list类型的命令
4.4.1 push往列表的头部插入数据
# LPUSH key value1 [value2] 将一个或多个值插入到列表头部
LPUSH list 1 2 3 4
4.4.2 range表示取指定范围的元素(0–1表示获取数据的元素)
# LRANGE key start stop 查看list当中所有的数据
LRANGE list 0 -1
4.5 操作SET类型的命令
Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
4.5.1 添加元素
有去重功能,如下例子:
# SADD key member1 [member2] 向集合添加一个或多个成员
SADD set_test 1
SADD set_test 1 2 3 4
4.5.2 获取所有的元素
# SMEMBERS key :返回集合中的所有成员
SMEMBERS set_test
4.5.3 获取元素的个数
# SCARD key :获取集合的成员数
SCARD set_test
4.6 针对key的操作命令
4.6.1 删除一个key,对应的数据结构
# DEL key 该命令用于在 key 存在时删除 key
DEL list
4.6.2 判断set_test这个key是否存在
# EXISTS key 检查给定 key 是否存在
# 返回1表示存在,返回0表示不存在
EXISTS set_test
4.6.3 给key设置过期时间
# EXPIRE key seconds 为给定 key 设置过期时间,以秒计
EXPIRE set_test 5
4.7 针对ZSET(有序SET)的操作命令
string类型元素的集合,用来保存需要排序的数据,例如排行榜,不允许重复的成员。
有序集合中,每个元素都带有score(权重),以此来对元素进行排序。它有三个元素:key、member和score
4.7.1 向ZSet中添加页面的PV值
# ZADD key score1 member1 [score2 member2] 向有序集合添加一个或多个成员,或者更新已存在成员的分数
ZADD pv 100 page1.html 200 page2.html 300 page3.html
4.7.2 获取有序集合的成员数
# ZCARD key 获取有序集合的成员数
# 获取一共有几个页面
ZCARD pv
4.7.3 有序集合中对指定成员的分数加上增量
# ZINCRBY key increment member 有序集合中对指定成员的分数加上增量 increment
# 要给page1.html页面增加pv值
ZINCRBY pv 10 page1.html
4.7.4 计算给定多个有序集的交集
# 创建两个保存PV的ZSET
ZADD pv_zset1 10 page1.html 20 page2.html
ZADD pv_zset2 5 page1.html 10 page2.html
# ZINTERSTORE destination numkeys key [key ...]
计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中
ZINTERSTORE pv_zset_result 2 pv_zset1 pv_zset2
4.7.5 获取ZSET中的所有成员
# ZRANGE key start stop [WITHSCORES] 通过索引区间返回有序集合指定区间内的成员 WITHSCORES:权重
ZRANGE pv_zset_result 0 -1 WITHSCORES
4.7.6 获取有序集合中指定成员的索引
# ZRANK key member 返回有序集合中指定成员的索引
# 求page1.html在页面PV中的排名(最小)
# 默认是按照升序统计 0, 1, 2,3 ...,从小到大排列
ZRANK pv_zset_result page1.html
4.7.7 将有序集成员按分数值递减(从大到小)排序
# ZREVRANK key member 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
# 求page1.html在页面PV中的排名(最大)
# 注意:这个操作效率很高,并不是重新排序,只是把ZSET反转(revert)即可
ZREVRANK pv_zset_result page1.html
注意:
- 排名是ZRANK是基于从小到大排列的,ZREVRANK是基于从大到小排列
- 排名是从0开始,0代表第一名