Redis7系列教程入门-认识Redis
卡二条的技术圈
共 15031字,需浏览 31分钟
·
2023-03-03 18:55
Redis7.0-rc1
,至今已经发布到 7.0.5 版本。很多的开发者,还对Redis认识停留在5.x的版本或者6.x的版本,对Redis7.0还缺乏较少的认识。本系列教程,将带领大家完整的学习Redis7.0相关的知识点。从环境的搭建、10大数据类型、事务、发布订阅、主从复制、哨兵、集群等等知识。本教程最大的特点是,不会单纯的总结一些枯燥乏味的理论知识,而是理论知识+基础时间+场景面试题分析,同时也会分享一些Redis相关技术栈等等内容
。Redis是什么
基于内存
,采用 key => vlaue 方式
存储的高性能内存型nosql数据库。Redis 提供数据结构,例如字符串、哈希、列表、集、带有范围查询的排序集、位图、超日志日志、地理空间索引和流。Redis 具有内置复制、Lua 脚本、LRU 逐出、事务和不同级别的磁盘持久性,并通过 Redis Sentinel 和 Redis 集群的自动分区提供高可用性。REmote DIctionary Server
。其默认的服务端口是 6379
。关于Redis的端口号选择 6379,有这么一种说法。6379在是手机按键上MERZ对应的号码,而MERZ取自意大利歌女Alessia Merz的名字。Alessia Merz 是一位意大利舞女、女演员。Redis 作者 Antirez(意大利人) 早年看电视节目,觉得 Merz 在节目中的一些话愚蠢可笑,Antirez 喜欢造“梗”用于平时和朋友们交流,于是造了一个词 "MERZ",形容愚蠢,与 "stupid" 含义相同。后来 Antirez 重新定义了 "MERZ" ,形容”具有很高的技术价值,包含技艺、耐心和劳动,但仍然保持简单本质“。到了给 Redis 选择一个数字作为默认端口号时,Antirez 没有多想,把 "MERZ" 在手机键盘上对应的数字 6379 拿来用了。Redis使用场景
bitmap
数据类型,将用户签到存储在Redis中,然后通过异步线程将数据存储到MySQL中。既节约了内存,也提供了系统的读写能力。list
数据类型,技能用来做消息队列,也能用来做栈等场景。在 Redis5.0 开始,也提供了一种 stream 数据类型,提高了消息队列的可靠性。GEO
的数据类型来进行位运算。可以根据用户当前的经纬度,来计算附近的酒店、商场等场所的搜索与推荐功能。setnx key value
+ expire time
操作,为了实现原子性操作,也可以直接使用 lua
实现。Redis有什么优势
环境安装
brew
包管理工具,在Linux上有 yum
或者 ap-get
这样的包管理工具。由于这种方式非常的简单,下面就单独演示源码编译安装。// 下载
cd ~ && wget https://github.com/redis/redis/archive/7.0.0.tar.gz
// 解压
tar -zxvf 7.0.0.tar.gz
[root@VM-16-3-centos redis-7.0.0]# ll
总用量 252
-rw-rw-r-- 1 root root 27744 4月 27 2022 00-RELEASENOTES
-rw-rw-r-- 1 root root 51 4月 27 2022 BUGS
-rw-rw-r-- 1 root root 5026 4月 27 2022 CONDUCT
-rw-rw-r-- 1 root root 2634 4月 27 2022 CONTRIBUTING
-rw-rw-r-- 1 root root 1487 4月 27 2022 COPYING
drwxrwxr-x 7 root root 4096 4月 27 2022 deps
-rw-rw-r-- 1 root root 11 4月 27 2022 INSTALL
-rw-rw-r-- 1 root root 151 4月 27 2022 Makefile # 编译文件
-rw-rw-r-- 1 root root 6888 4月 27 2022 MANIFESTO
-rw-rw-r-- 1 root root 22435 4月 27 2022 README.md
-rw-rw-r-- 1 root root 106547 4月 27 2022 redis.conf # 默认配置文件
-rwxrwxr-x 1 root root 279 4月 27 2022 runtest
-rwxrwxr-x 1 root root 283 4月 27 2022 runtest-cluster # 集群工具
-rwxrwxr-x 1 root root 1578 4月 27 2022 runtest-moduleapi
-rwxrwxr-x 1 root root 285 4月 27 2022 runtest-sentinel
-rw-rw-r-- 1 root root 1695 4月 27 2022 SECURITY.md
-rw-rw-r-- 1 root root 13924 4月 27 2022 sentinel.conf # 哨兵默认配置文件
drwxrwxr-x 4 root root 4096 4月 27 2022 src #源码文件
drwxrwxr-x 11 root root 4096 4月 27 2022 tests
-rw-rw-r-- 1 root root 3055 4月 27 2022 TLS.md
drwxrwxr-x 8 root root 4096 4月 27 2022 utils
接下来,在源码路径下执行安装操作。
make && make install
在经过几分钟的等待,出现如下的界面,就表示Redis已经被成功的安装。
Hint: It's a good idea to run 'make test' ;)
INSTALL redis-server
INSTALL redis-benchmark
INSTALL redis-cli
/usr/local/bin
目录下面。[root@VM-16-3-centos bin]# cd /usr/local/bin
[root@VM-16-3-centos bin]# ll
总用量 27896
-rwxr-xr-x 1 root root 383 12月 10 2019 chardetect
-rwxr-xr-x 1 root root 389 12月 10 2019 cloud-init
-rwxr-xr-x 1 root root 1781 12月 10 2019 cloud-init-per
-rwxr-xr-x 1 root root 399 12月 10 2019 easy_install
-rwxr-xr-x 1 root root 407 12月 10 2019 easy_install-3.6
-rwxr-xr-x 1 root root 1005 12月 10 2019 jsondiff
-rwxr-xr-x 1 root root 3663 12月 10 2019 jsonpatch
-rwxr-xr-x 1 root root 1839 12月 10 2019 jsonpointer
-rwxr-xr-x 1 root root 392 12月 10 2019 jsonschema
-rwxr-xr-x 1 root root 6976488 2月 26 15:48 redis-benchmark
lrwxrwxrwx 1 root root 12 2月 26 15:48 redis-check-aof -> redis-server
lrwxrwxrwx 1 root root 12 2月 26 15:48 redis-check-rdb -> redis-server
-rwxr-xr-x 1 root root 7234616 2月 26 15:48 redis-cli
lrwxrwxrwx 1 root root 12 2月 26 15:48 redis-sentinel -> redis-server
-rwxr-xr-x 1 root root 14307984 2月 26 15:48 redis-server
[root@VM-16-3-centos bin]# redis-server -v
Redis server v=7.0.0 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=34dee89a8e7e24d2
启动服务
redis-server
时会使用默认的配置文件。redis-server
命令即可,看到如下的界面表示Redis服务已经正常启动。但这样也存在一个问题,Redis服务时处于前台运行的,当我们将该shell窗口关闭后,服务就会被停止。因此推荐使用指定配置文件的方式。[root@VM-16-3-centos bin]# redis-server
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 7.0.0 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 615368
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | https://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
615368:M 26 Feb 2023 16:02:04.530 * Ready to accept connections
redis.conf
文件。可以直接在该文件修改,也可以将文件复制到指定目录,在对其修改。找到文件中的 daemonize
配置项,将其值改为 yes
。daemonize yes
redis-server ./redis.conf
,执行完之后,可能界面没有任何输出信息。我们可以使用 redis-cli
命令进行连接测试。[root@VM-16-3-centos redis-7.0.0]# redis-cli
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379>
教程回顾
看完上面的内容,做几个简单的测试吧,以便回顾一下知识内容。
1、 Redis是什么?
2、 项目当中,使用MySQL作为数据库存储,为什么还要使用Redis?
3、 Redis有哪些使用场景?
4、 Redis默认的端口是什么?
5、 Redis相对memcached而言,有什么优势?
评论