Redis基本操作

上一篇文章已经写了怎么源码安装Redis,可以查看《Redis源码安装for centos7》,接下来我们说一说Redis的一些基本操作命令

一、Redis登录

1
redis-cli

参数:

1
2
3
4
5
6
7
-h <hostname>		#指定主机IP
-p <port> #指定端口
-s <socket> #指定socket文件,如果客户端和服务端都在同一台主机,可以指定socket文件进行通信
-a <password> #指定认证密码
-r <repeat> #连接成功后指定运行的命令N次
-i <interval> #连接成功后每个命令执行完成等待时间,使用-i选项指定
-n <db>
例1:

##直接使用redis-cli连接,默认连接127.0.0.1,端口6379,无密码

1
2
[root@test01centos7 ~]# redis-cli 
127.0.0.1:6379>
例2:

##指定IP、端口连接

1
2
[root@test01centos7 ~]# redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379>

二、Redis设置密码

1
2
3
vim /etc/redis/redis.conf

requirepass nongkaige

##重启Redis生效

三、Redis使用密码登录

1、直接指定密码登录
1
2
3
4
5
[root@test01centos7 ~]# redis-cli -a nongkaige
127.0.0.1:6379> CONFIG GET requirepass
1) "requirepass"
2) "nongkaige"
127.0.0.1:6379>
2、登录之后再认证密码
1
2
3
4
[root@test01centos7 ~]# redis-cli
127.0.0.1:6379> AUTH nongkaige
OK
127.0.0.1:6379>

##以上说明一下,CONFIG GET requirepass是获取密码的意思。AUTH是验证密码。还有一点值得说明的是,如果redis设置了密码,也可以不输入密码直接登录,但是登录之后什么命令都无法操作,如下:

1
2
3
4
5
6
[root@test01centos7 ~]# redis-cli 
127.0.0.1:6379> CONFIG GET requirepass
(error) NOAUTH Authentication required.
127.0.0.1:6379> info
NOAUTH Authentication required.
127.0.0.1:6379>

四、Redis获取帮助

##登录redis之后可以使用help获取使用帮助,redis的help非常的强大,因为redis支持众多的数据结构,每一种数据结构当中都支持N种操作,因此需要使用help xxx的方式来获取某一种数据结构所支持的操作,如下,输入help就会提示你怎么操作查看帮助命令

1
2
3
4
5
6
7
8
9
10
11
12
127.0.0.1:6379> help
redis-cli 4.0.8
To get help about Redis commands type:
"help @<group>" to get a list of commands in <group>
"help <command>" for help on <command>
"help <tab>" to get a list of possible help topics
"quit" to exit

To set redis-cli preferences:
":set hints" enable online hints
":set nohints" disable online hints
Set your preferences in ~/.redisclirc
例1:

##获取字符串组支持哪些操作

1
127.0.0.1:6379> help @string

PXOWmq.png

例2:

##获取单个命令的使用方法

1
2
3
4
5
6
127.0.0.1:6379> help APPEND

APPEND key value #命令使用方法
summary: Append a value to a key #命令解释
since: 2.0.0 #说明此命令在哪个版本中引入的
group: string #该命令属于哪个组
例3:

##help Tab键,每敲一次轮换一个,带有@则为一个组,不带@则为命令使用方法

1
2
3
127.0.0.1:6379> help @generic
127.0.0.1:6379> help @list
127.0.0.1:6379> help CLIENT LIST

五、切换库(名称空间)

##默认登录redis就是在0号库,一共16个库,就是0-15号,如果要从0号库切换到1号库,使用select,注意啊,这和MySQL不一样,MySQL这个参数是查询的意思,在redis中是切换库,相当于MySQL的use参数

1
2
3
127.0.0.1:6379> SELECT 1
OK
127.0.0.1:6379[1]>

六、键的遵循

1
2
3
4
5
1)可以使用ASCII字符
2)键的长度不要过长,键的长度越长则消耗的空间越多
3)在同一个库中(名称空间),键的名称不得重复,如果复制键的名称,实际上是修改键中的值
4)在不同的库中(名称空间),键的同一个名称可以重复
5)键可以实现自动过期

七、set的操作

1
2
3
4
5
6
127.0.0.1:6379[1]> help set

SET key value [EX seconds] [PX milliseconds] [NX|XX]
summary: Set the string value of a key
since: 1.0.0
group: string

1
2
3
##EX:过期时间,单位秒
##NX:如果一个键不存在,才创建并设定值,否则不设定
##XX:如果一个键存在,则设置键的值,如果不存在,则不创建并不设置值
例1:

##设置一个nong的键,它的值为kaige

1
2
127.0.0.1:6379[1]> set nong kaige
OK
例2:

##上边已经设置了一个nong键,下面我们来试试使用NX,下边命令表示,如果没有这个nong键,则设置这个nong键,它的值为lihua,结果肯定是不允许创建的(nil),因为这个nong键已经存在了

1
2
3
4
127.0.0.1:6379[1]> set nong lihua NX
(nil)
127.0.0.1:6379[1]> get nong
"kaige"
例3:

##定义一个键,并设置其过期时间为60秒

1
2
3
4
127.0.0.1:6379[1]> set sda mnt EX 60
OK
127.0.0.1:6379[1]> get sda
"mnt"

##从上面可以看出,现在还是可以获取到sda键的值,等60秒过后我们再查看一次,已经无法获取到了,因为过期了

1
2
127.0.0.1:6379[1]> get sda
(nil)
例4:

##上边我们设置了一个nong键的值为kaige,下面我们使用XX,下边命令表示,如果nong这个键存在,则设置这个nong键的值为lihua,如果不存在,不创建也不设值

1
2
3
4
127.0.0.1:6379[1]> set nong lihua XX
OK
127.0.0.1:6379[1]> get nong
"lihua"
例5:

##跟例4一样,也是使用XX,只是这次我们设置一个不存在的键,如果不存在这个键,不创建也不设值

1
2
127.0.0.1:6379[1]> set hehe ziyi XX
(nil)

八、get的操作

##其实上边我们已经操作了很多次了,get就是获取一个键的值

1
2
127.0.0.1:6379[1]> get nong
"lihua"

九、添加键中的值(在原有的键中附加值,是附加,不是修改)

1
2
3
4
5
6
127.0.0.1:6379[1]> get nong
"lihua"
127.0.0.1:6379[1]> append nong hehe
(integer) 9
127.0.0.1:6379[1]> get nong
"lihuahehe"

十、获取指定键中值的字符串长度

1
2
127.0.0.1:6379[1]> strlen nong
(integer) 9

十一、定义整数值

1
2
127.0.0.1:6379[1]> set fda 1
OK

十二、增加键中的整数值

1
2
3
4
5
6
7
8
127.0.0.1:6379[1]> incr fda
(integer) 2
127.0.0.1:6379[1]> incr fda
(integer) 3
127.0.0.1:6379[1]> incr fda
(integer) 4
127.0.0.1:6379[1]> get fda
"4"

注意:incr命令只能对整数使用

十三、删除键

1
2
3
4
127.0.0.1:6379[1]> del fda
(integer) 1
127.0.0.1:6379[1]> get fda
(nil)

十四、列表的操作

键指向一个列表,而列表可以理解为是一个字符串的容器,列表是有众多元素组成的集合,可以在键所指向的列表中附加一个值

1
2
3
4
5
6
LPUSH		//在键所指向的列表前面插入一个值(左边加入)
RPUSH //在键所指向的列表后面附加一个值(右边加入)
LPOP //在键所指向的列表前面弹出一个值(左边弹出,即删除)
RPOP //在键所指向的列表后面弹出一个值(右边弹出,即删除)
LINDEX //根据索引获取值,指明索引位置进行获取对应的值
LSET //用于修改指定索引的值为指定的值
例1:

##一个新的列表,该列表名称为cc,值为nkg,创建一个新的列表使用LPUSH或RPUSH都可以

1
2
127.0.0.1:6379[1]> lpush cc nkg
(integer) 1
例2:

##获取列表中的值,需要指明索引位置进行获取对应的值,下边命令为获取列表cc中第一个索引的值,0表示第一个索引,因为从0开始计数

1
2
127.0.0.1:6379[1]> lindex cc 0
"nkg"
例3:

##在原有的列表的左侧加入一个值

1
2
3
4
5
6
127.0.0.1:6379[1]> lpush cc hlh
(integer) 2
127.0.0.1:6379[1]> lindex cc 0
"hlh"
127.0.0.1:6379[1]> lindex cc 1
"nkg"

这里说明一下,从上边可以看出,列表的值原本是nkg,我们从nkg的左边添加了一个hlh的值,那现在的值应该是hlh nkg,所以,上边我们获取第一个索引的值就是hlh,第二个就是nkg

例4:

##在原有的列表中的右侧加入一个值

1
2
3
4
5
6
7
8
127.0.0.1:6379[1]> rpush cc nzy
(integer) 3
127.0.0.1:6379[1]> lindex cc 0
"hlh"
127.0.0.1:6379[1]> lindex cc 1
"nkg"
127.0.0.1:6379[1]> lindex cc 2
"nzy"

这里又来说一下了,接着上边的我们知道,没有加入值之前,这个列表的值应该是hlh nkg,那我们在右侧加入一个nzy的值,那现在的值应该为hlh nkg nzy,所以,上边我们获取第一个索引的值就是hlh,第二个就是nkg,第三个为nzy

例5:

##修改一个已有列表中的值

1
2
3
4
127.0.0.1:6379[1]> lset cc 0 pipi
OK
127.0.0.1:6379[1]> lindex cc 0
"pipi"
例6:

##查看列表中值的数量

1
2
127.0.0.1:6379[1]> llen cc
(integer) 3
例7:

##在已有列表中的右侧弹出(删除)一个值

1
2
127.0.0.1:6379[1]> rpop cc
"nzy"
例8:

##在已有列表中的左侧弹出(删除)一个值

1
2
3
4
5
6
127.0.0.1:6379[1]> lpop cc
"pipi"
127.0.0.1:6379[1]> lpop cc
"nkg"
127.0.0.1:6379[1]> lpop cc
(nil)

十五、清空数据库

1
2
FLUSHDB:删除当前选择的数据库所有key
FLUSHALL:清空所有库

1
2
3
4
127.0.0.1:6379[1]> flushdb
OK
127.0.0.1:6379[1]> flushall
OK
博主QQ:1012405802
技术交流QQ群:830339411
版权声明:网站内容有原创和转载,如有侵权,请联系删除,谢谢!!
感谢打赏,93bok因你们而精彩!!(支付宝支持花呗)
0%