Redis字符串类型的常用命令小结

Redis字符串类型

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

一、最简单的命令

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

keys *

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

?:匹配一个字符

*:匹配任意个(包括0个)字符

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

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

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

例:

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

2、判断键是否存在

exists foo

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

例:

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

3、删除键

 del foo

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

del foo bar

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

例:

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

4、获得键值的数据类型

type foo

这里在重复一下上次说过的,redis的数据类型有:string(字符串类型)、hash(散列类型)、list(列表类型)、set(集合类型)、zset(有序集合类型)。

下面开始详细介绍每种数据类型的命令。

二、字符串类型

字符串类型是Redis中最基本的数据类型,他能存储任意形式的字符串,包括二进制数据。字符串类型也是其他四种数据类型的基础。也就是说,其他四种数据类型都是由字符串类型所组成的。

常用命令如下:

set key value   #赋值,返回值是OK

get key            #取值,返回值是对应键的值

incr key          #递增数字,虽然是字符串类型,但如果可以是整型的话,也是可以使用此命令递增的,返回值是递增后的值,递增操作后,再次获取该key值,值为新值。

例:

redis 127.0.0.1:6379> get age
"32"
redis 127.0.0.1:6379> incr age
(integer) 33
redis 127.0.0.1:6379> get age
"33"

incrby key number      #这个命令和上一个类似,只不过可以通过number指定增长的数量,返回值同样是增长后的值

例:

redis 127.0.0.1:6379> incrby age 5
(integer) 38
redis 127.0.0.1:6379> get age
"38"

decr key        #递减数字,类似递增,这里不做过多解释了

decrby key number     #类似于incrby,这里大家应该可以猜到,decrby key number和incrby key -number是一个意思

incrbyfloat key floatnumber     #增加指定浮点数,这个是增加一个双精度的浮点数,位数多了就会不准

append key value      #向尾部追加值,如 append foo ” value”,这个时候用引号是为了标识有空格,返回值为值的总长度

例:

redis 127.0.0.1:6379> append name 'hello'
(integer) 9
redis 127.0.0.1:6379> get name
"joanhello"

strlen key        #获取字符串值总长度,返回值就是长度,如果key不存在,则返回0

mget key [key ...]        #同时获得多个键值,键值的列表

例:

redis 127.0.0.1:6379> mget name age float
1) "joanhello"
2) "38"
3) "33.33"

mset key value [key value ...]     #同时设置多个键值,成功返回OK

redis 127.0.0.1:6379> mset name "joan" age 9 float 33.33
OK
redis 127.0.0.1:6379> mget name age float
1) "joan"
2) "9"
3) "33.33"

setbit/getbit    #这个是位操作,具体示例如下:

redis set foo bar
OK

这时赋值给foo值为bar,对应的ASCII码为98、97、114,转换为八位二进制为:

01100010、01100001、01110010

进行如下操作:

redis> getbit foo 0
0
redis> getbit foo 1
1
redis> getbit foo 2
1
redis> getbit foo 3
0 

所以getbit就是获取key对应的字符串类型键值指定位置的二进制的值(0或1),索引从0开始。

如果获取超出了最大值,也返回0.

而相反,setbit就是来设置key对应的指定位置的二进制值的。返回值是该位置的旧值。例如

redis> setbit foo 6 0
(integer) 1

如果要设置的值超过了最大长度,则命令会将最大长度之后到最大长度之间未设置的值统一设置为0,同理,设置一个不存在的键值,也会自动把它前面所有未设置的位置二进制设为0。如:

redis> setbit qqq 8 1
(integer) 0

则会把qqq对应的值变为00000001 。

bitcount key 命令可以返回字符串类型键值中二进制值为1的个数。

同时他的参数还可以设置查询的范围,

bitcount foo 0 1   #意思是只查询ba两个字节中包含二进制值为1的个数。

最后一个bitop命令,可以进行位操作。

bitop OR res foo1 foo2    #意思是把foo1和foo2做OR运算,结果存入res中。bitop支持的位操作有ND、OR、XOR、NOT四个。

字符串的操作命令就这些了。位的命令还是很有用的,比如我们在存储性别的时候可以把性别的类型设置为一个比特位,这样超级省空间的。

总结

以上就是这篇文章的全部内容了,希望能对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。

(0)

相关推荐

  • redis字符串类型_动力节点Java学院整理

    我们都知道redis是采用C语言开发,那么在C语言中表示string都是采用char[]数组的,然后你可能会想,那还不简单,当我执行如下命令,肯定是直接塞给char[]数组的. 如果你真的这么想的话,会有几个问题就要过来砍你了,先我们来找一个redis手册,http://doc.redisfans.com/ 第一:如果你每次都执行Append函数,那是不是redis的char[]每次都需要再次扩容,这样是不是每次都是耗时操作呢? 第二:如果你每次执行String中的StrLen,那redis底层

  • Redis字符串类型的常用命令小结

    Redis字符串类型 字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等.在Redis中字符串类型的Value最多可以容纳的数据长度是512M. 一.最简单的命令 1.获得符合规则的键名列表 keys * 这里的*号,是指列出所有的键,同时*号也可以替换成其他支持glob风格通配符格式,具体规则如下: ?:匹配一个字符 *:匹配任意个(包括0个)字符 []:匹配括号间多大任一个字符,可

  • Redis列表类型的常用命令小结

    列表类型介绍 列表类型也是一个我们很长要用到的一个类型.比如我们发博客,要用到博客列表.如果没有列表我们就只能遍历键来获取所有文章或一部分文章了,这个语法是keys,但是这个命令需要遍历数据库中的所有键,处于性能方面的考虑,在生产环境是不推荐使用的. 列表类型可以存储一个有序的字符串列表,常用的操作是向列表两端添加.删除.获取元素,或者某个片段.在redis中,实际上是使用双向链表的方式实现的,所以在列表两端添加删除元素的时间复杂度是O(1),获取的元素越接近两端,速度越快.但是通过索引访问元素

  • Redis集合类型的常用命令小结

    集合类型介绍 集合类型也是体现redis一个比较高价值的一个类型了.因为Redis的集合类型,所以我们可以很容易的在Redis中执行差集运算.交集运算.并集运算. 首先我们先介绍一下集合类型和列表类型的区别,其实学过面向对象的语言的同学应该都能猜到这些类型有什么不同. ①集合类型和列表类型还是都能存储2^32-1个字符串 ②集合类型是无序的,列表类型是有序的 ③集合类型是唯一的,列表类型的值是不唯一的 下面我们一起来看一下语法. 1.增加删除元素命令 sadd key member [membe

  • Redis有序集合类型的常用命令小结

    一.有序集合类型 有序集合类型,大家从名字上应该就可以知道,实际上就是在集合类型上加了个有序而已.Redis中的有序集合类型,实际上是在集合类型上,为每个元素都关联一个分数,有序实际上说的是分数有序,我们根据分数的范围获取集合及其他操作.集合的元素依然是不能够相同的,但是分数可以相同. 下面列举有序集合和类型和列表类型的相似处: ①两者都是有序的(废话!) ②两者都可以获得某一范围的元素 下面列举区别: ①列表是链表实现的,靠近两边的数据读取极快,而元素过多后获取中间元素的速度则会很慢:有序集合

  • Redis中散列类型的常用命令小结

    Redis散列类型 Redis是采用字典结构以键值对的形式存储数据的,而散列类型(hash)的键值也是一种字典结构,其存储了字段和字段值的映射,但字段值只能是字符串,不支持其他数据类型,也就是说,散列类型不能嵌套其他的数据类型.一个散列类型键可以包含至多2^32-1个字段. 除了散列类型,Redis的其他数据类型同样不支持数据类型嵌套.比如集合类型的每个元素只能是字符串,不能是一个集合或者散列表等. 散列类型适合存储对象:使用对象类别和ID构成建名,使用字段表示对象的属性,而字段值存储属性值.例

  • Linux操作系统操作MySQL常用命令小结

    下面给大家分享mysql常用命令, -- 启动数据库 service myslqd start; -- 进入MySQL -u root -p/mysql -h localhost -u root -p DatabaseName; -- 列出数据库 show database; -- 创建数据库 create database XXXX; -- 选择数据库 use DatabaseName; -- 罗列表 show table; -- 显示表格的属性 show columns from table

  • javascript中对Date类型的常用操作小结

    javascript中对Date类型的常用操作小结 /** 3. * 日期时间脚本库方法列表: 4. * (1)Date.isValiDate:日期合法性验证 5. * (2)Date.isValiTime:时间合法性验证 6. * (3)Date.isValiDateTime:日期和时间合法性验证 7. * (4)Date.prototype.isLeapYear:判断是否闰年 8. * (5)Date.prototype.format:日期格式化 9. * (6)Date.stringToD

  • Unix操作系统常用命令(小结)

    一.关于档案/目录处理的命令  1.ls--列目录   这是最基本的档案指令. ls 的意义为 "list",也就是将某一个目录或是  某一个档案的内容显示出来. 格式:ls -1ACFLRabcdfgilmnopqrstux -W[sv] [files] ls 的常用参数如下: -a : 在 UNIX 中若一个目录或文件名字的第一个字符为 "." , 则使用 ls  将不会显示出这个档案的名字,我们称此类档案为隐藏档.如 .profile..tcshrc等,如果我

  • linux压缩常用命令小结

     tar -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个.下面的参数是根据需要在压缩或解压档案时可选的. -z:有gzip属性的 -j:有bz2属性的 -Z:有compress属性的 -v:显示所有过程 -O:将文件解开到标准输出 下面的参数-f是必须的 -f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名. # tar -cf all

  • js字符串类型String常用操作实例总结

    本文实例讲述了js字符串类型String常用操作.分享给大家供大家参考,具体如下: 字符串是不可变的. 对字符串的所有操作都会返回一个新字符串,原字符串不变 在 ie 6-7 时,' abc ' + ' cdf '  如果两个大量的字符串拼接,性能很低,原因是需要开辟新内存 和 创建新变量,导致性能低下,而在ie8 后得到大幅改善. 字符串常用方法 // 创建字符串 var a = new String('123') var a = '123' a.length // => 3, length属

随机推荐