欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

Redis数据类型及操作

程序员文章站 2024-02-13 11:25:34
...

Redis数据类型及操作,redis 的 string 可以包含任何数据,比如 jpg 图片或者序列化的对象。从内部实现来看其实 string 可以看作 b

strings 类型

string 类型是二进制安全的。

redis 的 string 可以包含任何数据,比如 jpg 图片或者序列化的对象。从内部实现来看其实 string 可以看作 byte 数组,最大上限是 1G 字节
struct sdshdr {
long len;//buf的长度
long free;//buf剩余可用字节数
char buf[];//实际的字符串内容
};


1:set

设置 key 对应的value(string类型)

> set name larry

ok

2:setnx

即set not exist,如果 key 已经存在,返回 0

> set name larry

ok

>setnx name larry

(integer) 0

3:setex
存储键值对,并设置有效期

>setex name 10 larry
ok

>get name

"larry"

10秒钟后...

>get name

(nil)

4:setrange

有就替换,没有就用\x00代替缺少的字符来替换,数字代表开始替换的下标
> get name
"larry"
>setrange name 0 lv

(integer) 5
>get name
"lvrry"

>setrange name 10 lv

"lvrry\x00\x00\x00\x00\x00lv"

5:mset

每次设置多个key值

>mset key1 value1 key2 value2

ok

6:msetnx

一次设置多个 key 的值,具有原子性,同时成功或失败,失败返回0,所有操作回滚

7:get

根据key获取值,不存在返回(nil)

>get asdasds

(nil)

8:getset

获取旧值并设置一个新值,不存在返回(nil)

>get name

"larry"

>getset name lv

"larry"

>get name

"lv"

>getset dsadasd lv

(nil)

9:getrange

根据指定的下标获取值,负数表示从右边开始

>getrange 0 1 name

"la"

10:mget

返回多个值,,不存在返回(nil)

>get name sdadasd

1)"larry"

2)(nil)

11:incr

加加操作,如果字符不是int型会报错(error) ERR value is not an integer or out of range

> set age 20
OK
incr age
(integer) 21

12:incrby

加操作

> get age
"21"
> incrby age 5
(integer) 26

13:decr

减减操作

14:decrby

减操作

15:append

追加操作,返回字符串长度

>append name lv

(integer) 15

>get name

"larrylv"

16:strlen

返回value的长度

Redis数据类型及操作