**Redis(Remote Dictionary Server)**
## 简介:
原文链接:[https://blog.csdn.net/qq\_40065776/article/details/109159749](https://blog.csdn.net/qq_40065776/article/details/109159749)
Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:
> 1、Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
2、Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
3、Redis支持数据的备份,即master-slave模式的数据备份。
#### 五种常见类型
字符串 哈希 列表 集合 有序集合
## 一、String
### 1、字符串(String)
Redis 字符串数据类型的相关命令用于管理 redis 字符串值
```
SET --存入一个字符串键
SETNX --存入一个字符串键,若Key存在则操作失败
GET --获取指定Key的字符串
MSET --批量存入字符串键
MGET --批量获取指定Key的字符串
DEL --删除指定Key(所有类型都可以使用此命令)
```
* 应用场景
> (1)、分布式锁:SETNX(Key, Value),释放锁:DEL(Key)
### 2、数值(Number)
```
INCRBY Key increment --对Key进行数值相加,key不存在则新建
DECRBY Key decrement --对Key进行数值相减,key不存在则新建
INCR Key --对Key进行自加1,key不存在则新建
DECR Key --对Key进行自减1,key不存在则新建
```
* 应用场景:
(1)、文章的浏览量,视频的观看量
(2)、全局序列
#### 3、二进制(bit)
```
GETBIT Key offset --获取Key下标offset的值
SETBIT Key offset value --对Key下标offset进行设值
BITCOUNT Key [start] [end] --统计start到end位置设值为1的数量
BITOPS op destkey [key...] --对多个key进行位计算op(AND/OR/XOR/NOT)
```
* 应用场景:
(1)、存储图片
(2)、用户在线统计
## 二、Hash
Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象
```
HSET --存入一个key filed 散列结构
HSETNX --存入一个key field,若key中filed已经存在则操作失败
HGET --获取指定key field
HMSET --批量存入key filed
HMGET --批量获取key filed
HDEL --删除指定Key filed
HINCRBY --对key field的数值进行加减操作
```
* 优点:
(1)、将信息凝聚在一起,便于管理
(2)、从一定上避免误操作,减少key冲突
(3)、减少内存/IO/CPU的消耗
* 应用场景:
(1)、购物车功能
## 三、List
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
```
LPUSH Key value [value...] --往key的列表键中左边放入一个元素,key不存在则新建
RPUSH Key value [value...] --往key的列表键中右边放入一个元素,key不存在则新建
LPOP Key --从key的列表键最左端弹出一个元素
RPOP Key --从key的列表键最右端弹出一个元素
LRANGE Key start stop --获取列表键从start下标到stop下标的元素
BLPOP Key [Key...] timeout --阻塞的从key的列表键最左端弹出一个元素,若列表键中不存在元素,阻塞等待{timeout}秒,若{timeout}=0,一直阻塞
BRPOP Key [Key...] timeout --阻塞的从key的列表键最右端弹出一个元素,若列表键中不存在元素,阻塞等待{timeout}秒,若{timeout}=0,一直阻塞
```
* 应用场景:
(1)、消息队列
(2)、新闻推荐
## 四、Set
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据
```
SADD Key member [member...] --往集合键key中存放元素,若key不存在则新建
SREM Key member [member...] --从集合键key中删除元素
SMEMBERS Key --获取集合键key中的所有元素
SCARD Key --获取集合键key中的元素个数
SISMEMBER Key member --判断{member}元素是否存在于集合键key中
SRANDMEMBER Key [count] --从集合键key中选出{count}个元素,不从集合键key中删除
SPOP Key [count] --从集合键key中选出{count}个元素,并且从集合键key中删除
```
* 应用场景:
(1)、抽奖
(2)、点赞,转发,收藏
* 集合运算
```
SINTER Key [Key...] --交集运算
SINTERSTORE destination key [key...] --交集运算,运算结果保存在集合键destination中
SUNION Key [Key...] --并集运算
SUNIONSTORE destination Key [Key...] --并集运算,运算结果保存在集合键destination中
SDIFF Key [Key...] --差集运算
SDIFFSTORE destination key [key...] --差集运算,运算结果保存在集合键destination中
```
* 应用场景:
(1)、共同关注
(2)、可能认识的人
(3)、我关注的人也关注了他
(4)、商品筛选
## 五、ZSet
Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员
```
ZADD Key score element [...] --往有序集合键key中存放元素,若key不存在则新建
ZREM Key element [element...] --从有序集合键key中删除元素
ZSCORE Key element --获取有序集合键key中{element}元素的score值
ZINCRBY Key increment element --给有序集合键key中{element}元素进行score值操作,若key不存在则新建,{element}元素不存在则新增后进行score值操作
ZCARD Key --获取有序集合键key中元素个数
ZRANGE Key start stop [WITHSCORES] --正序获取有序集合键key中从start下标到end下标的元素
ZREVRANGE Key start stop [WITHSCORES] --倒序获取有序集合键key中从start下标到end下标的元素
```
* 集合运算
```
ZUNIONSTORE destkey numkeys key [key...] --并集运算
ZINTERSTORE destkey numkeys key [key...] --交集运算
```
* 应用场景:
(1)、排行榜,热搜榜
(2)、周榜,月榜,年榜
- 重要文档
- 工作须知
- 项目下的公共方法
- 程序员给代码写注释时有哪些讲究!
- RestFul 讲解
- 其他知识
- docker容器
- MongoDB的使用
- Node.js的使用
- Session共享
- Wordpress的使用
- Websocket的简介
- Ajax
- 项目技术
- Https配置证书
- Nginx的反向代理
- MySQL读写分离配置(laravel篇)
- Nginx的负载均衡
- App接口返回格式
- laravel中JWT的应用
- laravel验证码的使用
- laravel公共方法文件
- laravel框架的RBAC
- Git相关
- Git篇1
- Git篇2
- Mysql相关
- Mysql的主从复制
- MySQL的备份
- MySQL的使用
- 请求第三方接口
- Redis相关
- redis的使用
- Redis的基本用法以及场景分析
- 开发小技巧
- Linux
- 禁用root及密码登录
- Lnmp环境的安装
- 安装composer
- 安装Redis
- 文件共享服务 samba
- 其他安装
- Lnmp常用命令
- 性能检测命令
- Nginx的配置详解
- PHP相关
- PHP基础知识
- php常见的系统函数
- PHP的设计模式
- Cookie 和 Session 的封装
- Mysql知识
- Mysql索引
- MySQL的数据类型
- PHP重要知识
- PHP框架篇
- Laravel框架
- laravel---Excel
- laravel文件上传
- Laravel-Mysql常用操作
- Laravel队列(queue)
- laravel-发送Email
- laravel--JWT
- TP框架篇
- tp5主从数据库设置读写分离
- 前端
- JS
- js代码实现点击按钮出现60秒倒计时
- 开发软件相关
- 代码编辑器
- vs code配置ftp连接远程服务器实现代码文自动上传
- 编程相关软件下载