天天看点

高性能 Redis 实战 - 实战入门篇 - 安装部署及基本数据结构介绍

1.应用场景

主要介绍如何安装Redis以及Redis的常用数据结构.

2.学习/操作

1.文档阅读

https://laravelacademy.org/post/22164 // 安装部署及基本数据结构介绍

https://blog.csdn.net/william_n/article/details/115113177 // 2021-03-23 - 高性能 Redis 实战

2. 整理输出/实践

环境

Mac

Laravel Sail: https://blog.csdn.net/william_n/article/details/117425323

2.1 部署安装

高性能 Redis 实战 - 实战入门篇 - 安装部署及基本数据结构介绍

 Note:

这里是基于Docker

2.2 客户端连接

命令行方式
docker-compose exec redis redis-cli
简单交互 
高性能 Redis 实战 - 实战入门篇 - 安装部署及基本数据结构介绍
基准测试命令简单测试下部署在本地 Docker 容器中的 Redis 服务器同时处理 10 万个并发请求的性能: 

高性能 Redis 实战 - 实战入门篇 - 安装部署及基本数据结构介绍

高性能 Redis 实战 - 实战入门篇 - 安装部署及基本数据结构介绍
这里本地 Docker 容器默认资源配置:

内存使用上限是 2G,

CPU 是 6 核,

并发量达到了 2.2w/s 左右,整体性能已经非常好了。

图形化客户端
当然,你也可以像 MySQL 那样使用交互界面更加友好的图形化客户端软件连接到 Redis 服务器,比如 RDM 或者支持 Redis 的 TablePlus 以及,如果你也使用的是 Laradock 开发环境的话,还可以使用其集成的 Redis Web 管理后台 —— 

redis-webui

(封装了 phpMyRedis,你也可以自行搭建), 这里

具体安装或搭建操作省略,到时需要什么,就找什么即可~

TablePlus 长这这个样子 ↓ 

高性能 Redis 实战 - 实战入门篇 - 安装部署及基本数据结构介绍

2.2 支持的数据结构

关于Redis 目前支持的数据结构包含以下五种↓ 
  • String:字符串 // 应用场景主要是缓存以及基于

    INCR

    /

    INCRBY

     与 

    DECR

    /

    DECRBY

     指令用于取消点赞之类的操作 --  通过序列化[php serialize/unify json]后存入,取出反序列化
  • List:列表 // 列表类似于我们前面数据结构中介绍的链表,可以基于 Redis 的列表实现类似栈和队列的数据结构,基于 Redis 的消息队列也正是基于这个数据结构实现的,主要用于消息队列
  • Set:集合 // 学过高中数学的同学对集合这个数学概念都不陌生,集合拥有确定性、互异性和无序性,对应到 Redis 里面的集合数据结构也是一样,当业务场景需要对集合数据做去重处理而又不需要确保数据顺序时,Redis 集合是个不错的选择。
  • SortedSet:有序集合 // 但有些时候我们的业务场景既要去重,又要确保排序,比如一些热门数据排行榜的实现,因此,Redis 还支持另一种数据结构 —— 有序集合。
  • Hash:哈希字典 // Redis 字典的应用场景自然就是 NoSQL 数据库, 这种数据结构在很多语言中就是字典,但在 Redis 中英文名是 Hash,因为这些键值对字典中的键是基于 Hash 算法计算后存储的,从而确保唯一性。

Note:

对于 PHP 初级程序员而言,可能对列表、集合、字典这些数据结构不太熟悉,因为所有的数据结构都被 PHP 数组包圆了,不过 PHP 数组底层也是基于哈希表实现的,感兴趣的同学可以去看看其底层的实现原理。

在 PHP 中,可以通过关联数组来类比哈希字典。

具体实践命令暂时省略。

关于以上数据结构的指令有很多,有时候我们记不住,用的时候,到 Redis 官网 Commands 页面 进行查阅即可(在 Filter by group 下拉框选择对应的数据格式即可查看该数据格式支持的所有指令)↓ 

高性能 Redis 实战 - 实战入门篇 - 安装部署及基本数据结构介绍
 以下是个人操作后的结构,使用TablePlus连接可以看到的↓ 
高性能 Redis 实战 - 实战入门篇 - 安装部署及基本数据结构介绍

Note:

可以直接通过可视化工具tableplus进行编辑保存,效果是一样的,不过实际在使用的时候,多是通过代码命令方式去操作。

个人建议还是,作为程序员,

如果日常学习当中,多敲命令是有好处的;

如果是日常工作开发,效率自然是第一位,使用可视化工具可能效率会更高,当然因人而异,你说你使用键盘的速度远大于使用鼠标的speed,那就当我没说~

后续补充

...

3.问题/补充

TBD

4.参考

TBD

后续补充

...

继续阅读