澳门金沙vip 12

【澳门金沙vip】Redis字符串类型的常用命令小结

Redis字符串类型

string类型介绍与大多编程语言中的字符串类型一样,Redis的字符串也是字符序列,它是Redis中最为基础的数据存储类型,具有以下特点:字符串类型是Redis中二进制安全的,这就意味着它们都有一个已知的长度,可以接受任何格式的数据(如信息交换中常用的Json格式字符串,甚至图像数据)。Redis中字符串类型最多可以容纳的数据长度可达512M。

文章归博客园和作者“蜗牛”共同所有 。转载和爬虫请注明原文Redis系列链接

字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等。在Redis中字符串类型的Value最多可以容纳的数据长度是512M。

string类型相关命令Redis字符串命令主要用于管理字符串值,主要包括以下命令:1、
set命令
set命令用于设置指定键的值,具体格式为:set key value [ex
秒数] [px 毫秒数] [nx/xx]

Redis有五种基本数据类型。他们分别是字符串,散列,列表,集合,有序集合。实际上,后四种,在我们表面上理解看来,是以不同的形式来组织字符串键值。

一、最简单的命令

各个选项的含义如下:ex:设置指定的到期时间,单位为秒px:设置指定的到期时间,单位为毫秒,如果ex和px同时写,则以后面的有效期为准nx:如果对应key不存在则创建xx:如果对应key存在则修改其值

你可以用其存储任何你所希望的一块整体数据,是整体数据哟。如果是文章的标题,标签,内容,评论这样的数据,虽然你可以将其对象序列化为Json存储,但是不建议使用字符串。因为作为一个整体存储,当你想获得其中任意一项时,比如标题或者说作者,你需要获取整文章数据并且传输量大了不少,接下来反序列化,并获得标题。你也甚至可以存储base64一类的图片等等。最常用的像用户名,密码,邮箱,验证码等。一个字符串键最大允许存储512MB数据。

1、获得符合规则的键名列表

示例1:

澳门金沙vip 1 set key value

keys *
127.0.0.1:6379> set mykey "this is redis"OK

澳门金沙vip 2keys * 列出所有键
keys   ,不建议在生产环境使用。

这里的*号,是指列出所有的键,同时*号也可以替换成其他支持glob风格通配符格式,具体规则如下:

在示例1中,用set命令来设置key、value,操作成功后终端打印出“OK”。2、get命令get命令用来获取指定键的值,如果键不存在,则返回nil,如果返回值不是字符串,则返回错误。具体格式为:get
key

keys支持通配符号

:匹配一个字符

示例2:

澳门金沙vip 3澳门金沙vip,     
使用*匹配任意个(包括0个)字符

*:匹配任意个字符

127.0.0.1:6379> get mykey"this is redis"127.0.0.1:6379> get yourkey

澳门金沙vip 4 使用[] 匹配范围

[]:匹配括号间多大任一个字符,可以使用“-”表示范围,如[a-z]

3、mset命令mset命令用于一次性设置多个键和值,和set命令一样操作成功后返回字符串“OK”。具体格式为:mset
key1 value1 key2 value2 …

澳门金沙vip 5 使用匹配任意一个字符。注意
是“”个

\x:匹配字符x,用于转义,如需匹配问号,需要\才能匹配

示例3:

 澳门金沙vip 6 还有一个\x转义符,这就是在需要取有转义符号的内容时用到的。 

这里说明一下,redis命令是不区分大小写的,还有就是keys命令是需要遍历Redis中所有的键的,当键很多时,很耗费性能的。所以在生产环境中要尽可能的不用。

127.0.0.1:6379> mset key1 "this is key1" key2 "this is key2"OK127.0.0.1:6379> get key1"this is key1"127.0.0.1:6379> get key2"this is key2"

澳门金沙vip 7 exists
判断是否存在,存在几个返回相应的数字

例:

4、mget命令mget命令用于返回所有给定键的值。对于某个不存在值的键或者不存在的键,返回nil,否则返回指定键的值列表。具体格式为:mget
key1 key2 …

澳门金沙vip 8 del keys 删除键 
删除几个返回相应的数字 

redis 127.0.0.1:6379 set name "joan"OKredis 127.0.0.1:6379 get name"joan"redis 127.0.0.1:6379 set aaa 1OKredis 127.0.0.1:6379 set bbb 2OKredis 127.0.0.1:6379 keys *1) "aaa"2) "name"3) "bbb"

示例4:

澳门金沙vip 9 type key  
返回key的类型

2、判断键是否存在

127.0.0.1:6379> set key1 "hello"OK127.0.0.1:6379> set key2 "world"OK127.0.0.1:6379> mget key1 key2 key31) "hello"2) "world"3) 

get key  获取键值  只适用于字符串哟

exists foo

5、setrange命令setrange命令将字符串中偏移量为offset后的子串覆盖为指定的值,该命令返回修改后的字符串的长度。具体格式为:setrange
key offset value

incr key递增数字,用get set自主实现incr
key会发生竞态。详情请看我的Redis并发锁一文。如果不存在的key默认为0,该指令操作后值为1,返回递增后的值。

如果存在返回证书类型1,否则返回0

如果偏移量offset > 原字符串长度,不足部分用0x00补全。示例5:

澳门金沙vip 10  incrby key 
增加指定值,返回的是增加后的结果。

例:

127.0.0.1:6379> set key1 "Hello World"OK127.0.0.1:6379> setrange key1 6 "Redis" 11127.0.0.1:6379> get key1"Hello Redis"127.0.0.1:6379> setrange key1 15 "Hei" 18127.0.0.1:6379> get key1"Hello Redis\x00\x00\x00\x00Hei"

decr decrby都是减法。

redis 127.0.0.1:6379 exists name(integer) 1redis 127.0.0.1:6379 exists n(integer) 0

6、setex命令setex命令用来设置指定键的值,并指定该键值对应的存在时间。具体格式如下:setex
key seconds value

澳门金沙vip 11 append key
val拼接值,最后返回字符串长度。

3、删除键

示例6:

strlen获取键的值的字符串长度。

 del foo
127.0.0.1:6379> setex key1 5 "hello" // 5s的过期时间OK127.0.0.1:6379> get key1 // 马上访问"hello"127.0.0.1:6379> get key1 // 5s后访问

澳门金沙vip 12 mset  mget 
一次存储和获取多个键值

返回的是删除的键的个数,这里说明也可以一次删除多个键,只需空格再加键就可以了。例如:

7、setnx命令setnx命令也可以用来设置指定键的字符串值,但该命令在设置前需要检查指定键是否已经存在。如果存在,则该命令的作用和set命令一样,操作完成后返回1,否则不重新设置已经存在的键的字符串值,直接返回0。具体格式如下:setnx
key value

 

del foo bar

示例7:

小结:简单介绍了基本的字符串类型操作以及结果。还有位操作没怎么用过。incr命令一般可以用于文章的ID,访问量统计等情况,不会发生并发竞态。

如果删除一个键,这个键已经不存在了就会返回0 。

127.0.0.1:6379> setnx key1 "Hello" 1127.0.0.1:6379> setnx key1 "World" 0127.0.0.1:6379> get key1"Hello"

另外在习惯中,我们为Redis的key命名是由对象类型:对象ID:对象属性命名的。

例:

8、append命令故名思议,append命令将字符串追加到指定键的原值上,返回值为新字符串的长度。具体格式为:append
key value

比如:Artical:4001:ViewCount    文章4001的访问量      Project:1001:PM 
项目1001的PM      Book:9001:Author.Name  书籍9001的作者名称

redis 127.0.0.1:6379 keys *1) "aaa"2) "name"3) "bbb"redis 127.0.0.1:6379 del aaa bbb(integer) 2redis 127.0.0.1:6379 del aaa(integer) 0

示例8: