Redis 基本命令使用

使用默认配置文件启动redis服务端
# ./redis-server ../redis.conf 

查看redis是否启动
# ps -ef | grep redis
root      13466      1  0 21:19 ?        00:00:00 ./redis-server 0.0.0.0:6379
root      13473   9139  0 21:19 pts/1    00:00:00 grep --color=auto redis

启动redis客户端
# ./redis-cli 

使用 auth your password 连接redis
127.0.0.1:6379> auth 123456
OK

如果设置了密码,却没有使用 auth 命令。会报如下错误:
127.0.0.1:6379> get age
(error) NOAUTH Authentication required.

一、SET命令的相关操作 

1、set命令的使用 

以下参与博客链接:https://www.cnblogs.com/idiotgroup/p/5455282.html

127.0.0.1:6379> set key value [expiration EX seconds|PX milliseconds] [NX|XX]

当key中已经保存一个值的话,这个值会被覆盖成新的值,并且忽略掉原始类型(一个key对应的不一定是一个字符串,也可以是List等其他的数据结构);如果key不存在,那么则会在数据库中新增一个key,对应的值就是刚刚设置的初始值。

127.0.0.1:6379> get age 
(nil)
127.0.0.1:6379> set age 14
OK
127.0.0.1:6379> get age 
"14"
127.0.0.1:6379> set age 24
OK
127.0.0.1:6379> get age
"24"

set命令--可选的参数。下面依次来介绍:

EX seconds     :设置key的过时时间,单位为秒。

PX milliseconds:设置key的过期时间,单位为毫秒。

以ex为例:

127.0.0.1:6379> set age 24 ex 15
OK
127.0.0.1:6379> get age
"24"

15秒过后:

127.0.0.1:6379> get age
(nil)

NX:(if Not eXist)只有键key不存在的时候才会设置key的值

XX:只有键key存在的时候才会设置key的值

127.0.0.1:6379> set name zxk nx
OK
127.0.0.1:6379> get name
"zxk"
127.0.0.1:6379> set name zxk nx
(nil)

2、setrange 命令的使用

127.0.0.1:6379> setrange key offset value 

这个命令可以覆盖掉key对应的string的一部分。offset表示需要覆盖的字符串的起始位置,之后会用value的值,覆盖掉原始string的
对应位置的数据。如果原始key不存在,则默认为一个长度为0的字符串。如果offset超过原始string的长度,那么会在之前的string后面
补充0以达到offset。如果value的长度超过了原始string后面可以覆盖的部分,则Redis内部会重新申请内存,完成数据的追加。

127.0.0.1:6379> setrange now 4 "i am a student"
(integer) 18
127.0.0.1:6379> get now
"\x00\x00\x00\x00i am a student"
127.0.0.1:6379> setrange now 0 hihi
(integer) 18
127.0.0.1:6379> get now
"hihii am a student"

3、mset 命令的使用

127.0.0.1:6379> mset key value [key value ...]

mset 一次性设置多个key-value。如果key的值已存在,则会直接覆盖。

相当与同时调用多次SET命令。不过要注意的是,这个操作是原子的。也就是说,所有的keys都一次性设置的。如果你同时运行两个MSET来设置
相同的keys,那么操作的结果也只会是两次MSET中的后一次的结果,而不会是混杂的结果。

127.0.0.1:6379> mset name zxk age 14 job ctbri 
OK
127.0.0.1:6379> get name
"zxk"
127.0.0.1:6379> get age
"14"
127.0.0.1:6379> get job
"ctbri"
127.0.0.1:6379> get zxk
(nil)
127.0.0.1:6379> mset name zx age 14 job ctbri 
OK
127.0.0.1:6379> get name
"zx"

4、msetnx 命令的使用

Set multiple keys to multiple values, only if none of the keys exist

127.0.0.1:6379> msetnx key value [key value ...]

原子操作,一次性设置多个key-value。如果存在任何一个key已经存在,那么这个操作都不会执行。所以,当使用MSETNX的时候,要么全部
key都被修改,要么全部都不被修改。

127.0.0.1:6379> msetnx name zx time 2019-05-16
(integer) 0
127.0.0.1:6379> get zx
(nil)
127.0.0.1:6379> get name
"zxk"
127.0.0.1:6379> get time
(nil)
127.0.0.1:6379> msetnx addr beijing time 2019-05-16
(integer) 1
127.0.0.1:6379> get addr
"beijing"
127.0.0.1:6379> get time
"2019-05-16"
5、SETEX key seconds value
设置key的值和超时。和前面的set key value ex seconds一样。
6、PSETEX key milliseconds value
设置key的值和超时。和前面的set key value px milliseconds一样。
7、SETNX key value
当key不存在的时候,设置key的值。和set key value nx一样。

 二、GET的相关操作

1、get 命令的使用

127.0.0.1:6379> get key

根据给定的key,获取value值。如果key不存在,会返回nil。如果key对应的值不是string(List,Set等),则会报错,因为 get 只能处理
string类型的value。

127.0.0.1:6379> get zx
(nil)
127.0.0.1:6379> set question "i am a good boy"
OK
127.0.0.1:6379> get question
"i am a good boy"
127.0.0.1:6379> lpush list 1 2 3 4 5 6
(integer) 6
127.0.0.1:6379> get list
(error) WRONGTYPE Operation against a key holding the wrong kind of value

2、mget命令的使用

127.0.0.1:6379> mget key [key ...]

一次性获取多个key的值。如果key不存在,则对应的地方返回nil。

127.0.0.1:6379> mget name age stu
1) "zxk"
2) (nil)
3) "rabbitmqnginx"

 3、GETRANGE 命令的使用

127.0.0.1:6379> getrange key start end

该指令只要用于获取字符串的字串,在Redis2.0版本之前,叫做SUBSTR。strat和end是字串的起始和结束的位置,可以用负数来表示
距离string尾部的未知的下标。-1是最后一个字符,-2是底数第二个字符。这个表达方式和Python的获取list的子list非常相似。

需要注意的有两点:

字串包括了start和end这两个位置的字符。在Python中是不包含end的。
当给出的start和end超出了string的范围时,指令只会返回在string内的结果。

127.0.0.1:6379> get question
(nil)
127.0.0.1:6379> set question "i am a good boy"
OK
127.0.0.1:6379> get question
"i am a good boy"
127.0.0.1:6379> getrange question 4 9
" a goo"
127.0.0.1:6379> getrange question 4 -1
" a good boy"
127.0.0.1:6379> getrange question 0 9
"i am a goo"
127.0.0.1:6379> getrange question 0 100
"i am a good boy"

4,GETSET 命令的使用

127.0.0.1:6379> getset key value

设置key的值,并返回之前的值。如果之前key的值不是string,则会报错。

这个指令相当于先GET,再SET。

这个指令可以用来配合INCR指令一起使用支持重置的技术功能(INCR我们后面会讲到)。先设置count为0,每次INCR使得count加1。等到需要
获取计数的时候,使用GETSET count 0,就能获取计数的值,并且把计数器重置。

127.0.0.1:6379> set name "strong name"
OK
127.0.0.1:6379> getset name strong
"strong name"
127.0.0.1:6379> get name
"strong"

三、string的修改操作

1、strlen命令的使用

127.0.0.1:6379> strlen key

返回key对应的string的长度,如果key对应的不是string,则报错。如果key不存在,则返回0(还是把key对应的看成空字符串)。

127.0.0.1:6379> get name
"strong"
127.0.0.1:6379> strlen name
(integer) 6

 2、append命令的使用

127.0.0.1:6379> append key value

如果key已经存在,且值为string,则将value追加到值的后面,如果key不存在,则会创建一个空的字符串的key,然后执行追加操作。

127.0.0.1:6379> set stu redis
OK
127.0.0.1:6379> getset stu rabbitmq
"redis"
127.0.0.1:6379> get stu
"rabbitmq"
127.0.0.1:6379> strlen stu
(integer) 8
127.0.0.1:6379> get redsi
(nil)
127.0.0.1:6379> append stu nginx
(integer) 13
127.0.0.1:6379> get stu
"rabbitmqnginx"

3、incr 命令的使用 

127.0.0.1:6379> incr key 

对存储在key的整数值进行原子的加1操作。
如果key不存在,则会设置默认值0,再加1。如果key存在,但是存储的值不是字符串,或者存储的字符串不能表示整数,则执行该操
作时,会报错。这个操作仅限于64位的有符号的整型数据。

key存储的值是个字符串,但是该操作的效果和对相应的数字进行操作一样。而且,Redis中,在存储这类字符串的时候,底层上其实存
储的就是一个整数,因此不存在存储上的浪费。

127.0.0.1:6379> decr age
(integer) 14
127.0.0.1:6379> get age
"14"
127.0.0.1:6379> incr name
(error) ERR value is not an integer or out of range

4、decr,incrby,decrby命令的使用 

127.0.0.1:6379> DECR key

对存储在key的整数值进行原子的减1操作。

127.0.0.1:6379> INCRBY key increment

对存储在key的整数值进行原子的加操作,加increment。

如果key不存在,操作之前,key就会被置为0。如果key的value类型错误或者是个不能表示成数字的字符串,就返回错误。这个操作最多支
持64位有符号的整型数字。基本上和INCR一样。

127.0.0.1:6379> DECRBY key decrement

对存储在key的整数值进行原子的减操作,减increment。

127.0.0.1:6379> INCRBYFLOAT key increment

对存储造key中的浮点数进行原子的加操作,加increment。
如果key不存在,操作之前,key就会被置为0。如果key的value类型错误或者是个不能表示成浮点数的字符串,就返回错误。
Redis没有DECRBYFLOAT这个操作,因此想要实现减操作,只需要把increment设成负的就可以。

 

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值