开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程:Redis 的基本使用】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/626/detail/9784
Redis 的基本使用
内容介绍
一、Redis 的启动
二、Redis 的基本指令
三、快速入门
一、Redis 的启动
这个非常简单。在这里直接双击一下启动 Redis 的服务器端程序(redis-server.exe)。双击过后这个服务就不要关闭了。
这里写的很清楚。The server is now ready to accept connections on port 6379. 现在看这个已经非常熟悉了。因为 accept 和端口以及链接是什么意思不会是一点概念都没有了。这说明前面的基础知识还是很重要的,尤其是对于第一次学习编程的同学。就相当于可以理解成上次写的 server,其实本质是相同的。然后有了 go,这就能启动起来。
这个示意图也已经讲过就不再多说。启动起来以后把这个客户端也一起起来。
目前用 redis-cli 去操作,就先不使用 go 语言。因为先用 redis-cli 把基本的指令学完了,再去用 go 语言去连,其实就是顺理成章的事情。那现在再去启动一下 cli 端。这个 cli 端已经把它要操作的端口配置好,所以双击就有点类似于启动的 cli go。因为是本地,所以一次就连上了。它的意思就是说已经连接到了本地的 IP 6379这个端口。如果把服务器或者是客户端关掉,这个链接是双向的,两者肯定就都不行。启动起来之后再看基本指令。
二、Redis 的操作指令
网上有一个站点为 redisdoc.com。这里面就把 redis 的指令或者为命令全部都写出来。如果把它放在 java 中讲至少要两到三天。这块因为是 go 语言所以主要是解决怎样往里面存和取的问题。这个就讲一些最核心的就可以了。打开 redisdoc.com 这个站点看一下它的指令有哪些。
它的指令参考有很多,可以用 CTRL+F 来快速查找。最左边是 key 的操作,其实就是指的 key 有哪些指令。旁边是字符串(string),字符串对应的就是 key-val。如果想通过 redis-cli .exe 这个指令给 redis 核心组件,让它帮助去存放一个 key value,那它的指令就在这里查找。比如 APPEND,GET,INCR,MGET 一次获取多个 key,MSET 一次设置多个 key value 等都在这里去找。那么如果想通过指令对哈希,按照哈希的形式存放数据就在哈希表里找指令。HDEL,HGET,HLEN 还有 HSET。这个就是对哈希这种数据结构的存储,相当于以哈西的形式来存放。那么如果想学习 List(列表)的形式就在相应的一栏寻找指令。有序集合一般是以 Z 打头的。数据只有 String(字符串)、哈希、List、集合和有序集合这五大数据类型。另外 Redis 还有其他服务。例如发布/订阅、事务、脚本、连接,包括服务这边的启动连接,比如切数据库都在这里。还有一些相关的文档。学完之后往里面存任何一种数据都可以,怎么取也能解决了。至于其他的在项目的使用过程中再加深一下就可以了。这个基本介绍要有一个基本认识。这是 Redis 的安装和基本使用做一个概述。
三、快速入门
Redis 安装好后,默认有16个数据库,这16个数据库是用标号来标识的,编号是0到15一共16个。
它的操作数据都是指的对内存数据的操作。这个是非常有用的,在做开发的时候不可避免地会用到。在做开发的时候不用数据库这是不可能的,只是多少的问题。依次来演示一下。
1、添加 key-val[set]
打开客户端输入 set 指令,这个 set 后面可以带 key-value,后面中括号的部分代表其他信息,比如超时了多少时间。这些如果不需要可以不用管。127.0.0.1:6379>set key1 hello 先写一个 key1,值是 hello,这个中括号不写可以不管它,一回车就完成了。这个指令就是往里面添加 key-value。Key 的名字就叫 key1,值就叫 hello。这就是它的一个 set。127.0.0.1:6379>get key1 hello 获取是 get key1,这样就把 hello 得到了。刚才这个指令一执行过后就应该在脑海里想像到它是如何执行的。比如刚才写了一个 set key1 hello,一回车它就通过网络把这个数据发送给 redis 的核心组件。这个核心组件拿到后发现是 set 指令,于是它就会在内存里面存放 key1 hello这样一个数据,当然这个时候数据库默认是0号数据库,因为一共是16个数据库。此时数据已经被存放到内存里面去了,就是这样一个逻辑。如果要取的话就是 get key1。还是把指令发送给 redis 的核心组件,它就会找到 key1并把 hello 返回来。就这样一个简单的过程。
2、查看当前 Redis 的所有 key[keys
3、获取 key 对应的值[get key]
4、切换 redis 数据库[select index]
如果不想在0号数据库,用第二个数据库也是可以的。
127.0.0.1;6379>select 1 127.0.0.16379[1]>get key1 这个时候就切换到1号数据库了。对此可以这样想象在它的里面有16份内存,有一份是0号,还有一份是1号,还有一份是15号。这个时候里面是空的,就这个数据库里面的内容是空的。如果没有的话,要是获取肯定是不行的,get key1 是个空的。
127.0.0.1:6379[1]>select 0 127.0.0.1:6379>get key1 hello
再切回到0号,再 get key1 就拿到了。这个很好理解,来回可以切换。
5、如何查看当前数据库的 key-val 数量[dbsize]
127.0.0.1:6379>dbsize 1
127.0.0.1:6379>set key2 say
127.0.0.1:6379>dbsize 2
默认是当前数据库,回车。现在只有一对 key value,假设再加一个 set key2,这时候再看 dbsize。这时候会返回一个2,有两对。
6、清空当前数据库的 key-val 和清空所有数据库的 key-val[flushdb flushall]
清空指令是 flushdb。如果写的是 flushdb,代表的是清空当前数据库。如果写的是 flushall,代表的是把16个数据库的数据全部清空。区别就在这里。
最关键的指令 get、set和 select、切换数据库和统计当前数据库的key-value 必须学会。