三、Redis字符串类型基本操作记录(1)

作者: 温新

分类: 【Redis】

阅读: 2209

时间: 2020-08-30 10:46:12

字符串类型是Redis中最基本的数据类型,String可以存储任何形式的字符串,包括二进制数据。

一个String类型键允许存储的数据最大容量是512MB。

set 设置指定key的值

​ 语法:set key value

127.0.0.1:6379> set name zhaoliu
OK
127.0.0.1:6379> set name 'li si'
OK

1)set设置给定key的值。如果key已存储其它值,则覆盖旧值;

2)如果有空格等其它字符,则使用引号包含。

get 获取指定key的值

​ 语法:get key

127.0.0.1:6379> get name
"li si"

# 获取不存在的key
127.0.0.1:6379> get name1
(nil)

# 获取不是String类型的key
127.0.0.1:6379> lpush a '111'
(integer) 3
127.0.0.1:6379> get a
(error) WRONGTYPE Operation against a key holding the wrong kind of value

获取指定key的值,如果key不存在,则返回nil,如果key存储的值不是String类型,则返回错误

mset 设置一个或多个key-value对

​ 语法:mset key1 value1 key2 value2 ...

127.0.0.1:6379> mset keya valuea keyb valueb
OK

# 设置已经存在的key
127.0.0.1:6379> mset keya 'i ma a' keyb 'i am b'
OK

如果key存在,则新值覆盖旧值

mget 获取一个或多个给定key的值

​ 语法:mget key1 key2 ...

# 获取一个key的值
127.0.0.1:6379> mget keya
1) "i ma a"

# 获取多个key的值
127.0.0.1:6379> mget keya keyb
1) "i ma a"
2) "i am b"

msetnx 设置一个或多个key-value对,当且仅当所有key不存在

​ 语法:msetnx key1 value1 key2 value2 ...

127.0.0.1:6379> msetnx a1 10 a2 20
(integer) 1

# 存在key,设置不成功
127.0.0.1:6379> msetnx num 10 age 10
(integer) 0

getset 设置指定key的值,并返回旧值

​ 语法:getset key value

127.0.0.1:6379> getset name 'wang wu'
"li si"

127.0.0.1:6379> get name
"wang wu"

# key不存在,返回nil
127.0.0.1:6379> getset aa 'i am aa'
(nil)

1)当key不存在时,返回nil

2)当key不是字符串时,报错

setrange 为指定的key进行指定范围的value值,从offset处开始重写

​ 语法:setrange key offset value

# 将指定偏移量开始处的值进行重写
127.0.0.1:6379> get name
"wang wu"
127.0.0.1:6379> setrange name 5 hello
(integer) 10
127.0.0.1:6379> get name
"wang hello"
127.0.0.1:6379> 

getrange 获取指定在key中指定范围(偏移量)的字符串

​ 语法:getrange key start end

# 获取所有指定范围的内容,如同get
127.0.0.1:6379> get keya
"i ma a hello"
127.0.0.1:6379> getrange keya 0 -1
"i ma a hello"

# 获取keya中hello
127.0.0.1:6379> getrange keya 7 -1
"hello"
127.0.0.1:6379> getrange keya 7 12
"hello"

append 为指定的key追加值

​ 语法:append key value

# 已存在的key
127.0.0.1:6379> append keya ' hello'
(integer) 12
127.0.0.1:6379> get keya
"i ma a hello"

# 不存在的key
127.0.0.1:6379> append name 'li si'
(integer) 5
127.0.0.1:6379> get name
"li si"

1)若key存在,则将value追加到原来的key值的末尾

2)若key不存在,则进行设置改key的值为value,可以理解为执行set操作

strlen 获取指定key中值的长度

​ 语法:strlen key

127.0.0.1:6379> strlen keya
(integer) 12

# key不存在,返回0
127.0.0.1:6379> strlen ziruchu
(integer) 0

# key不是字符串时报错
127.0.0.1:6379> lpush db mysql redis
(integer) 2
127.0.0.1:6379> strlen db
(error) WRONGTYPE Operation against a key holding the wrong kind of value

1)只能获取key类型为字符串的值的长度,否则报错

2)当key不存在时,返回0

请登录后再评论