跟我学Redis(5)—strings类型及操作

来源:互联网 发布:java人脸识别原理 编辑:程序博客网 时间:2024/05/22 07:50

string是最简单的类型,操作类似于memcached。string类型是二进制安全的。意思是redis的string可以包含任何数据,比如jpg图片或者序列化的对象。从内部实现来看其实string可以看作byte数组,最大上限是1G字节,下面是string类型的定义: 

struct sdshdr {    long len;    long free;    char buf[]; }; 

len是buf 数组的长度。 

free 是数组中剩余可用字节数,它本质上就是个byte 数组,可以包含任何数据。buf 是个char数组用于存贮实际的字符串内容。另外string类型可以被部分命令按int处理,比如incr等命令。


strings类型常用命令

set

设置key对应的value。成功返回ok,失败返回0。

语法:set key value

redis 127.0.0.1:6379> set domain weixinpy OK redis 127.0.0.1:6379> 

setnx

设置key对应的value。如果key已经存在,则设置不生效,并返回0。nx:not exist。

语法:setnx key value

redis 127.0.0.1:6379> get domain "weixinpy" 
redis 127.0.0.1:6379> setnx domain weixinpy_new(integer) 0
redis 127.0.0.1:6379> get domain "weixinpy"
redis 127.0.0.1:6379>

 setex

设置key对应的value,并指定此键值对应的有效期。ex:expire。成功返回ok。

语法:setex key expire-arg value

redis 127.0.0.1:6379> setex tmpdomain 10 weixinpy.com OK redis 127.0.0.1:6379> get tmpdomain "weixinpy.com" 
redis 127.0.0.1:6379> get tmpdomain (nil) redis 127.0.0.1:6379>

setrange

设置key对应的value的子字符串(从range-arg开始,不包括range-arg)。成功返回value长度。

语法:setrange key range-arg value

redis 127.0.0.1:6379> setrange domain 8 gmail.com (integer) 18 
redis 127.0.0.1:6379> get domain "weixinpy@gmail.com"
redis 127.0.0.1:6379>

mset

一次设置多个key的值,成功返回ok表示所有的值都设置了,失败返回0表示没有任何值被设置。 

语法:mset key value [key1 value1 key2 value2]

redis 127.0.0.1:6379> mset key1 weixinpy1 key2 weixinpy2 OK redis 127.0.0.1:6379> get key1 "weixinpy1" 
redis 127.0.0.1:6379> get key2 "weixinpy2"
redis 127.0.0.1:6379>

msetnx

一次设置多个key的值,成功返回ok表示所有的值都设置了,失败返回0表示没有任何值被设置。返回0,则操作都会回滚,都不会被执行。

语法:msetnx key value [key1 value1 key2 value2]

redis 127.0.0.1:6379> msetnx key2 weixinpy2_new key3 weixinpy3 (integer) 0 
redis 127.0.0.1:6379> get key2 "weixinpy2"
redis 127.0.0.1:6379> get key3 (nil)

get

获取key对应的string值,如果key不存在返回nil。 

语法:get key

redis 127.0.0.1:6379> get domain "weixinpy" 
redis 127.0.0.1:6379>

getset

设置key的值,并返回key的旧值。如果key不存在返回nil。

语法:getset key value

redis 127.0.0.1:6379> getset domain weixinpy.com "weixinpy" 
redis 127.0.0.1:6379> get domain "weixinpy.com"
redis 127.0.0.1:6379>

getrange

获取指定key的value值的子字符串。左侧下标从0开始,右侧下标从-1开始,超出范围取同方向最大长度。

语法:getrange key range-start-arg range-end-arg

redis 127.0.0.1:6379> getrange domain 0 7
"weixinpy"

redis 127.0.0.1:6379>

mget

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

语法:mget key [key1 key2]

redis 127.0.0.1:6379> mget key1 key2 key3
1) "weixinpy1"
2) "weixinpy2"
3
) (nil) redis 127.0.0.1:6379>

incr

对key的值做++操作,并返回新的值。注意incr对象如果不是int会报错。incr一个不存在的key,则设置key为1。

语法:incr key

redis 127.0.0.1:6379> set pageview 20 
OK redis 127.0.0.1:6379> incr pageview (integer) 21
redis 127.0.0.1:6379> get pageview "21"
redis 127.0.0.1:6379>

incrby

和incr类似,加指定值。

语法:incrby key int-arg

redis 127.0.0.1:6379> incrby pageview 5 
(integer) 26
redis 127.0.0.1:6379> get pageview "26"
redis 127.0.0.1:6379>

decr

对key的值做--操作,并返回新的值。注意decr对象如果不是int会报错。decr一个不存在的key,则设置key为-1。

语法:decr key

redis 127.0.0.1:6379> decr pageview   (integer) 25 
redis 127.0.0.1:6379> get pageview "25"
redis 127.0.0.1:6379>

decrby

和decr类似,减指定值。可以通过incrby负数实现同样操作。

语法:decrby key int-arg

redis 127.0.0.1:6379> decrby pageview 5 
(integer) 20
redis 127.0.0.1:6379> get pageview "20"
redis 127.0.0.1:6379>

append

给指定key的字符串值追加value,返回新字符串值的长度。

语法:append key value

redis 127.0.0.1:6379> append domain @126.com (integer) 15 
redis 127.0.0.1:6379> get domain "weixinpy@126.com"
redis 127.0.0.1:6379>

strlen

获取key对应字符串值的长度

语法:strlen key

redis 127.0.0.1:6379> get domain "weixinpy.com" 
redis 127.0.0.1:6379> strlen domain (integer) 12
redis 127.0.0.1:6379> get pageview "150"
redis 127.0.0.1:6379> strlen pageview (integer) 3
redis 127.0.0.1:6379>



   扫一扫,通过微信也能学习


1 0
原创粉丝点击