参考视频教程:Redis零基础到进阶,最强redis7教程
官网:Redis
中文官网:Redis中文网
Redis命令手册:redis 命令手册
是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。
单机Sql
90年代,一个基本的网站访问量一般不会太大,单个数据库完全足够! 那个时候,更多的去使用静态网页 Html ~ 服务器根本没有太大的压力!
思考一下,这种情况下:整个网站的瓶颈是什么?
1、数据量如果太大、一个机器放不下了!
2、数据的索引 (B+ Tree),一个机器内存也放不下
3、访问量(读写混合),一个服务器承受不了
只要你开始出现以上的三种情况之一,那么你就必须要晋级!
Memcached(缓存) + MySQL + 垂直拆分 (读写分离)
网站80%的情况都是在读,每次都要去查询数据库的话就十分的麻烦!所以说我们希望减轻数据的压 力,我们可以使用缓存来保证效率!
发展过程: 优化数据结构和索引–> 文件缓存(IO)—> Memcached(当时最热门的技术!)
分库分表 + 水平拆分 + MySQL集群
本质:数据库(读,写)
早些年MyISAM: 表锁,十分影响效率!高并发下就会出现严重的锁问题
转战Innodb:行锁 慢慢的就开始使用分库分表来解决写的压力!
MySQL 在哪个年代推出 了表分区!这个并没有多少公司 使用! MySQL 的 集群,很好满足哪个年代的所有需求!
如今最近的年代
2010–2020 十年之间,世界已经发生了翻天覆地的变化;(定位,也是一种数据,音乐,热榜!) MySQL 等关系型数据库就不够用了!数据量很多,变化很快~!
MySQL 有的使用它来存储一些比较大的文件,博客,图片!数据库表很大,效率就低了!如果有一种数 据库来专门处理这种数据, MySQL压力就变得十分小(研究如何处理这些问题!)大数据的IO压力下,表几乎没法更大!
注意:我这里是ubuntu20
shu@shu-virtual-machine:/environment$ sudo wget https://github.com/redis/redis/archive/7.0.9.tar.gz
shu@shu-virtual-machine:/environment$ ls
7.0.9.tar.gz
shu@shu-virtual-machine:/environment$
shu@shu-virtual-machine:/environment$ sudo tar -zxvf 7.0.9.tar.gz
shu@shu-virtual-machine:/environment$ cd redis-7.0.9/
shu@shu-virtual-machine:/environment/redis-7.0.9$ ls
00-RELEASENOTES CODE_OF_CONDUCT.md COPYING INSTALL MANIFESTO redis.conf runtest-cluster runtest-sentinel sentinel.conf tests utils
BUGS CONTRIBUTING.md deps Makefile README.md runtest runtest-moduleapi SECURITY.md src TLS.md
sudo apt-get install gcc automake autoconf libtool make -y
sudo make
shu@shu-virtual-machine:/environment/redis-7.0.9$ sudo apt install tcl
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libtcl8.6 tcl8.6
Suggested packages:
tcl-tclreadline
The following NEW packages will be installed:
libtcl8.6 tcl tcl8.6
0 upgraded, 3 newly installed, 0 to remove and 501 not upgraded.
Need to get 922 kB of archives.
After this operation, 4,197 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://us.archive.ubuntu.com/ubuntu focal/main amd64 libtcl8.6 amd64 8.6.10+dfsg-1 [902 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu focal/main amd64 tcl8.6 amd64 8.6.10+dfsg-1 [14.8 kB]
Get:3 http://us.archive.ubuntu.com/ubuntu focal/universe amd64 tcl amd64 8.6.9+1 [5,112 B]
Fetched 922 kB in 7s (124 kB/s)
Selecting previously unselected package libtcl8.6:amd64.
(Reading database ... 185435 files and directories currently installed.)
Preparing to unpack .../libtcl8.6_8.6.10+dfsg-1_amd64.deb ...
Unpacking libtcl8.6:amd64 (8.6.10+dfsg-1) ...
Selecting previously unselected package tcl8.6.
Preparing to unpack .../tcl8.6_8.6.10+dfsg-1_amd64.deb ...
Unpacking tcl8.6 (8.6.10+dfsg-1) ...
Selecting previously unselected package tcl.
Preparing to unpack .../archives/tcl_8.6.9+1_amd64.deb ...
Unpacking tcl (8.6.9+1) ...
Setting up libtcl8.6:amd64 (8.6.10+dfsg-1) ...
Setting up tcl8.6 (8.6.10+dfsg-1) ...
Setting up tcl (8.6.9+1) ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for libc-bin (2.31-0ubuntu9.2) ...
shu@shu-virtual-machine:/environment/redis-7.0.9$ sudo apt-get update
Hit:1 http://security.ubuntu.com/ubuntu focal-security InRelease
Hit:2 http://us.archive.ubuntu.com/ubuntu focal InRelease
Hit:3 http://us.archive.ubuntu.com/ubuntu focal-updates InRelease
Hit:4 http://us.archive.ubuntu.com/ubuntu focal-backports InRelease
Reading package lists... Done
shu@shu-virtual-machine:/environment/redis-7.0.9$
make test
# 安装工具
sudo apt install net-tools
shu@shu-virtual-machine:/environment/redis-7.0.9$ ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.102 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::3074:62fc:f667:b639 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:0c:5e:fa txqueuelen 1000 (Ethernet)
RX packets 4756 bytes 3651443 (3.6 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3050 bytes 259458 (259.4 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 174 bytes 15256 (15.2 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 174 bytes 15256 (15.2 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
shu@shu-virtual-machine:/environment/redis-7.0.9/src$ ./redis-server ../redis.conf
shu@shu-virtual-machine:/environment/redis-7.0.9/src$ ps -ef|grep redis
shu 4083 1522 0 17:38 ? 00:00:00 ./redis-server 127.0.0.1:6379
shu 4089 4015 0 17:39 pts/0 00:00:00 grep --color=auto redis
shu@shu-virtual-machine:/environment/redis-7.0.9/src$
shu@shu-virtual-machine:/environment/redis-7.0.9/src$ ./redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379>
shu@shu-virtual-machine:/environment/redis-7.0.9/src$ ./redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set age 10
OK
127.0.0.1:6379> get age
"10"
127.0.0.1:6379>
tar -zxvf redis-6.0.6.tar.gz
cp -d redis-6.0.6 /opt/local/redis
cd /opt/local/redis
# 监听地址,默认是 127.0.0.1,会导致只能在本地访问。修改成 0.0.0.0 则可以在任意 IP 访问,生产环境不要设置 0.0.0.0
bind 0.0.0.0
# 守护进程,修改为 yes 后即可后台运行
daemonize yes
# 密码,设置后访问 redis 必须输入密码
requirepass 123456
yum install gcc-c++
make
./src/redis-server redis.conf
./src/redis-cli
ps -ef|grep redis
RedisInsight提供以下功能:
下载安装
下载地址:RedisInsight | The Best Redis GUI
参考网站:Linux安装Redis监控工具RedisInsight_LifeIsForSharing
我这是是Window的,下载安装包无脑安装就行了
Redis 为什么单线程还这么快?
参考命令:Redis 键(Keys)
命令 | 描述 |
---|---|
DEL | 用于删除 key |
DUMP | 序列化给定 key ,并返回被序列化的值 |
EXISTS | 检查给定 key 是否存在 |
EXPIRE | 为给定 key 设置过期时间 |
EXPIREAT | 用于为 key 设置过期时间,接受的时间参数是 UNIX 时间戳 |
PEXPIRE | 设置 key 的过期时间,以毫秒计 |
PEXPIREAT | 设置 key 过期时间的时间戳(unix timestamp),以毫秒计 |
KEYS | 查找所有符合给定模式的 key |
MOVE | 将当前数据库的 key 移动到给定的数据库中 |
PERSIST | 移除 key 的过期时间,key 将持久保持 |
PTTL | 以毫秒为单位返回 key 的剩余的过期时间 |
TTL | 以秒为单位,返回给定 key 的剩余生存时间( |
RANDOMKEY | 从当前数据库中随机返回一个 key |
RENAME | 修改 key 的名称 |
RENAMENX | 仅当 newkey 不存在时,将 key 改名为 newkey |
TYPE | 返回 key 所储存的值的类型 |
UNLINK | 该命令会执行命令之外的线程中执行实际的内存回收,因此它不是阻塞,而 DEL 是阻塞的。 |
WAIT | Redis WAIT 命令用来阻塞当前客户端,直到所有先前的写入命令成功传输并且至少由指定数量的从节点复制完成。 |
具体使用参考官方文档
总结