前面第一课,我们讲完了Redis的一个安装过程,本次课程我将带领同学们深入Redis的实战,即我们怎么去使用Redis。
一.Redis的客户端连接与全局命令
首先,参考第一课,我们启动一个端口为6379的redis服务;接下来,我们可以使用redis-cli连接和操作Redis服务。redis-cli可以使用两种方式连接Redis服务器。
1.1 单次操作以及redis客户端连接常见错误
我们可以用redis-cli -h{ip} {host} -p{port} {command}就可以对redis做一次操作,该操作会直接给我们返回相关结果,如我在192.168.239.132服务器上用配置文件的方式开启了一个6379端口的redis服务,那么我就在192.168.239.130服务器上使用redis-cli -h 192.168.239.132 -p 6379 set jiangsong hello,如下图1.1-1 连接报错示意图所示,可以看到的是报错了,我连接不上192.168.239.132这台服务器上的redis,这也是常见错误。
图1.1-1 连接报错示意图
这个报错的原因也很简单,也是新手同学们最常碰见的一个问题,这是因为Redis的配置文件:redis.conf下存在一个bind 127.0.0.1 -::1的配置,如下图1.1-2 bind配置示意图,这个配置会限制只有本机才能连上这个redis服务,因此我们使用#将这行配置注释掉,然后再找到password配置 这个是连接redis服务的密码,此处""号可加可不加,最后将其保存,如下图1.1-3 密码配置示意图所示,然后指定该配置文件重新启动redis服务即可。
图1.1-2 bind配置示意图
图1.1-3 密码配置示意图所示
如果你的本机还存在一模一样的错误,那么就是服务器下存在有redis端口的防火墙,我们需要执行如下命令:sudo firewall-cmd --permanent --remove-port=6379/tcp去关闭它,再使用sudo firewall-cmd --reload命令重新加载防火墙配置即可,某些虚拟机环境可能不生效,可以直接service firewalld stop让防火墙关闭即可。
最终,成功在192.168.239.132服务器上运行单次操作:redis-cli -h 192.168.239.132 -p 6379 -a 6821663 set jiangsong hello,注意-a后面跟的就是上一步在redis.conf下新增的密码,如下图1.1-3 执行单次操作示意图,有warning警告,是因为单次操作加上了密码明文,在redis认为是不安全的,但没关系,本次操作是OK的。我们可以看到,使用redis-cli -h 192.168.239.132 -p 6379 -a 6821663 get jiangsong也是获得了值hello。
图1.1-3 执行单次操作示意图
1.2 命令行操作
通过redis-cli -h (host}-p {port}的方式连接到Redis服务,之后所有的操作都是通过控制台进行,如下图1.2-1 命令行操作示意图所示,那么接下来我们就可以基于命令行操作,愉快的对redis进行实践了。
图1.2-1 命令行操作示意图所示
二. Redis的数据结构
Redis提供了一些数据结构供我们往Redis中存取数据,最常用的基本数据结构有5种,字符串(String)、哈希(Hash)、列表(list)、集合(set)、有序集合(ZSET)。此外,还用得比较多的高级数据数据结构有4种,分别是位图(bitmap),基数统计(HyperLogLog),地理位置索引(GEO),流数据结构(Stream),本文会先详细介绍五种基本数据结构的使用。
2.1 字符串
字符串类型是Redis最基本的数据结构,其它几种数据结构也都是在字符串类型基础上构建的,所以先学好字符串类型,可以为学习其它四种基础数据结构类型奠定好基础。此外,Redis的字符串类型不仅可以是字符串,还可以是数字,二进制(图片,音频,视频),但是值不能大于512M。现在,我们来用命令感受一下字符串类型的使用吧。
2.1.1 set和get
首先,我们还是以命令行操作,像第一节单次操作那里我们已经接触到了set和get的命令,这就是字符串类型数据,其中set命令的格式一般如下:
set [key] [value] [op]
o