字符串类型是Redis中最基本的数据类型,它是二进制安全的,任何形式的字符串都可以存储,包括二进制数据、序列化后的数据、JOSN化的对象,甚至是一张经Base64编码后的图片

设置键值对
  1. SET命令:设置键值对
    命令格式:
SET key value [EX seconds] [PX milliseconds] [NX|XX]

EX seconds:用于设置key的过期时间为多少秒
PX milliseconds:用于设置key的过期时间为多少毫秒
NX:表示当key不存在时,才对key进行设置操作
XX:表示当key存在时,才对key进行设置操作

D:\Redis\Redis3>redis-cli --raw # 启动客户端,后面的--raw是为了GET名字时显示汉字而不是二进制,具体看下面的GET
127.0.0.1:6379> select 3  # 我选择了数据库3,默认为数据库0,0不显示
OK
127.0.0.1:6379[3]> SET stuName-1 '小王'
OK
127.0.0.1:6379[3]> SET age-1 22
OK
127.0.0.1:6379[3]>
二次补充
redis-cli -h 地址 -p 6379 -a ‘密码‘ -c
***注意密码带引号
  1. MSET命令:设置多个键值对
    命令格式:
MSET key value [key value ...]  # 中间是没有逗号的,我之前加了逗号报错了,还有就是别加什么时间限制还有存在还是不存在时再设置,就只有key value

使用MSET命令同时设置多个键值对时。如果key已经存在,那么新值就会覆盖旧值。MSET命令是一个原子性操作,所有给定的key都会在同一时间内被设置更新,不会说是你更新了而我没有更新
返回值永远是OK,因为MSET不可能设置失败

127.0.0.1:6379[3]> MSET age-5 22 height-5 166 birthday 1996-09-10
OK
127.0.0.1:6379[3]>
  1. SETNX命令:设置不存在的键值对
    其实这是另一种SET语法,我还是喜欢第一种SET,都到这了就写出来看看吧
    命令格式:
127.0.0.1:6379[3]> SETNX collegeName 'jisuanji'  # 第一次设置
1
127.0.0.1:6379[3]> SETNX collegeName 'jisuanji'  # 第二次设置
0

如果key不存在则设置键值。如果key存在时则什么都不做
返回值:设置成功返回1,设置失败返回0

  1. MSETNX命令:设置多个不存在的键值对
    命令格式:
MSETNX key value [key value ...]

使用此命令时,当且仅当所有的给定的key都不存在时设置。如果有任何一个key存在,那么MSETNX命令也会拒绝所有给定key的设置操作。MSETNX命令是原子性的
如果设置成功则返回1,否则返回0

127.0.0.1:6379[3]> MSETNX chinese-teacher 'guo' math-teacher 'wang'
1
127.0.0.1:6379[3]> MSETNX chinese-teacher 'guo' english-teacher 'wang'
0
获取键值对
  1. GET命令:获取键值对的值
    命令格式:
GET key

当key存在时,返回key对应的值;如果key不存在,则返回nil;如果key不是字符串类型的,则返回错误

127.0.0.1:6379[3]> GET stuName-1
小王  # 返回的是中文,如果当时连接客户端时没有指定--raw则返回的就是"\xcd\xf5\xd3\xc0\xb7\xc9"
127.0.0.1:6379[3]> GET nnnnnnn  # 这个键不存在

127.0.0.1:6379[3]>
  1. MGET命令:获取多个键值对的值
    命令格式:
MGET key [key...]

使用MGET命令同时返回多个给定key的值,key之间使用空格隔开,如果给定的key不存在则返回nil

127.0.0.1:6379[3]> MGET stuName-1 nsf age-1
小王
               # nsf键不存在则返回空
22
127.0.0.1:6379[3]>
  1. GETRANGE命令:获取键的子字符串值
    命令格式:
GETRANGE key start end

使用此命令来获取key中字符串值从start到end结束的子字符串,下标从0开始,start和end为整数,当取负数时表示从字符串的最后开始计数,最后一个是-1,倒数第二个是-2,以此类推。

127.0.0.1:6379[3]> SET haha 'Python MySQL Redis MongoDB'
OK
127.0.0.1:6379[3]> GETRANGE haha 0 7
Python M
127.0.0.1:6379[3]> GETRANGE haha 1 7
ython M
127.0.0.1:6379[3]> GETRANGE haha -2 -1
DB
127.0.0.1:6379[3]> GETRANGE haha -8 -3
 Mongo
设置键的生存时间
  1. SETEX命令:为键设置生存时间(秒)
    命令格式:
SETEX key seconds value

SETEX 命令是一个原子性命令,它设置value与设置生存时间是在同一时间完成的

127.0.0.1:6379[3]> SETEX city 60 'xian'
OK
127.0.0.1:6379[3]> GET city  # 获取城市名
xian
127.0.0.1:6379[3]> TTL city  # 查看剩余生存时间,剩余48秒
48
127.0.0.1:6379[3]> GET city  # 48秒后查看,键值为空
  1. PSETEX命令:为键设置生存时间(毫秒)
    命令格式:
PSETEX key milliseconds value
键值对的值操作
  1. SETRANGE命令:替换键的值
    命令格式:
SETRANGE key offset value

从指定的位置(offset)开始将key的值替换为新的字符串,value多长就替换多长。SETRANGE命令会确保字符串足够长,以便将value设置在指定的偏移量上。如果给定key原来存储的字符串长度比偏移量小(比如,字符串只有4个字符长,但设置的offset是9),那么原字符和偏移量之间的空白将用零字节来填充

127.0.0.1:6379[3]> GET haha
Python MySQL Redis MongoDB
127.0.0.1:6379[3]> SETRANGE haha 0 ppp
26  # 返回执行SETRANGE命令之后的字符串长度
127.0.0.1:6379[3]> GET haha
ppphon MySQL Redis MongoDB

127.0.0.1:6379[3]> SETRANGE haha 24 'nihao'
29
127.0.0.1:6379[3]> GET haha
ppphon MySQL Redis Mongonihao

127.0.0.1:6379[3]> SETRANGE haha 30 'lala'  # 原字符没有30位那么原字符和偏移量之间的空白字符就用零字节填充
34
127.0.0.1:6379[3]> GET haha
"ppphon MySQL Redis Mongonihao\x00lala"
  1. GETSET命令:为键设置新值
    命令格式:
GETSET key value

将给定key的值设置为value,并返回key的旧值。当key存在但不是字符串类型时,将返回错误。如果key不存在则返回nil

127.0.0.1:6379[3]> GETSET haha nihao''
"ppphon MySQL Redis Mongonihao\x00lala"
127.0.0.1:6379[3]> GET haha
"nihao"
127.0.0.1:6379[3]> GETSET haha2 'nihao2'  # 不存在haha2这个键时
(nil)
127.0.0.1:6379[3]> GET haha2
"nihao2"
  1. APPEND命令:为键追加值
    命令格式:
APPEND key value

如果key存在且是字符串类型的,则将value值追加到key旧值的末尾。如果key不存在,则将key设置值为value

127.0.0.1:6379[3]> APPEND haha2 'nice'
(integer) 10  # 返回的是追加过后字符串的长度
127.0.0.1:6379[3]> GET haha2
"nihao2nice"
127.0.0.1:6379[3]> APPEND haha3 'very nice'  # 没有haha3这个键时
(integer) 9
键值对的计算
  1. STRLEN命令:统计键的值的字符长度
    命令格式:
STRLEN key

统计key的值得字符长度。当key存储的不是字符串时报错,当key不存在时返回0

127.0.0.1:6379[3]> STRLEN haha3
(integer) 9
127.0.0.1:6379[3]> STRLEN haha4  # 此时haha4键不存在
(integer) 0
键值对的值增量
  1. DECR命令:让键的值减1
    命令格式:
DECR key

将key中存储的数字值减1.如果key不存在,则key的值先被初始化为0,再执行DECR操作减1
注意:这个命令只对数字类型的数据进行操作,如果key对应的值包含错误类型,或者字符串类型的值不能表示为数字,则返回一个错误

127.0.0.1:6379[3]> MGET age-1 weight-1 birthday-1
1) "22"
2) "75"
3) "1996-02-14"
127.0.0.1:6379[3]> DECR age-1
(integer) 21
127.0.0.1:6379[3]> DECR weight-1
(integer) 74
127.0.0.1:6379[3]> DECR birthday-1
(error) ERR value is not an integer or out of range
127.0.0.1:6379[3]>
  1. DECRBY命令:键的值减去减量值
    命令格式:
DECRBY key decrement

基本概念和上面的DECR是一样的,接下来做几个演示就行了

127.0.0.1:6379[3]> MGET age-1 weight-1
1) "21"
2) "74"
127.0.0.1:6379[3]> DECRBY age-1 2
(integer) 19
127.0.0.1:6379[3]> DECRBY weight-1 2
(integer) 72
127.0.0.1:6379[3]> DECRBY heng-1 2  # heng键不存在,先初始化为0再执行减操作
(integer) -2
  1. INCR命令:让键的值加1
    命令格式:
INCR key

同DECR,只是将key中存储的值加1

127.0.0.1:6379[3]> MGET age-1 weight-1
1) "19"
2) "72"
127.0.0.1:6379[3]> INCR age-1
(integer) 20
127.0.0.1:6379[3]> INCR weight-1
(integer) 73
  1. INCRBY命令:让键的值加上增量值
    命令格式:
INCRBY key increment

概念同DECRBY,只是执行加

127.0.0.1:6379[3]> MGET age-1 weight-1
1) "20"
2) "73"
127.0.0.1:6379[3]> INCRBY age-1 3
(integer) 23
127.0.0.1:6379[3]> INCRBY weight-1 3
(integer) 76
  1. INCRBYFLOAT命令:让键的值加上浮点数增量值
    命令格式:
INCRBYFLOAT key increment
127.0.0.1:6379[3]> GET PI
"3.1415"
127.0.0.1:6379[3]> INCRBYFLOAT PI 0.1
"3.2415"
127.0.0.1:6379[3]> INCRBYFLOAT PI 0.1000002
"3.3415002"
127.0.0.1:6379[3]> INCRBYFLOAT num-1 3
"3"
127.0.0.1:6379[3]> INCRBYFLOAT num-1 0.1
"3.1"