您的位置:首页 > 数据库 > Redis

Redis常用数据类型及其相关操作

2017-01-17 19:24 627 查看
上一篇文章竟然被我不小心(本来点的是编辑,看花了,点到删除去了)给删了,那一刻我的心情真的很难受,花了几个小时写的博客竟然就这样没了,本来还高兴的等着审核完毕的。后来仔细看了下,幸好回收站还有(给了我一丝的希望),不过回收站没有恢复功能,所以我就只能通过网上的一些办法找CSDN的管理员了,加了他的Q,扣他,当然也发了邮件过去,不过现在还没有下文,但愿管理员能看到我的消息,帮我的博文恢复过来,那我真的不胜感激。

下一次我保证不会出现这样的事了,这一次给了我一个教训,我会记住的,干我们这行的,一定要细心认真。同时我也希望其他博友,不要犯跟我一样的错。现在我唯一能做的,就是等待,不过在等待的过程中,我是不会浪费时间的,接下来我将整理一下自己的心情,继续我敲打我未完成的事



ps:上面是我的一段小经历,跟大家分享下,大家有时间可以当故事看下,没时间直接往下看,下面是干货,希望对大家能够有所帮助



上一篇文章主要介绍了一下Redis以及它的安装。如果大家看的比较仔细的话,应该记得上一篇我有说过Redis相比Memcache而言,它所支持的数据类型更多。主要有String(字符串)、List(链表)、Set(集合)、Sorted Set(有序集合)、Hashes(哈希/字典)这五种类型,当然还有其他的数据类型,比如Pub/Sub(订阅)、Transactions(事务)等等,只不过我们平时用的相对比较多的,也就是比较常用的还是前五种数据类型,那么接下来我就说说前面五种数据类型的相关操作。

String:

是二进制安全的,可以存储任何长度为512M的字符串,并且可以包含任何数据,比如JPG图片或序列化对象

set key value:设置key的值为value,如果key之前已经存在,则用value替代原来的值

get key:获取key的值

getset key newvalue:结果是获取key的旧值,但是此时key已被赋予了新的值(newvalue)

mset key1 value1 key2 value2:设置多个key,这里key1的值为value1,key2的值为value2

mget key1 key2:获取多个key的值,结果为value1,value2

strlen key:结果为key的值的长度

setex key time value:表示设置key的值为value,有效期时间是time秒,也就是说,过了这个时间key就变成空了

incr key:使key自增,也就是key的值+1;如果原来没有这个key,那么这个key的值现在就是1,如果原来有key,但不是int,比如原来key的值是"c++",那么做这个操作就会报错

incrby key increment:使key的值+increment,例如如果原来key的值是10,执行了incrby key 100,那么key 的值就变成110;如果原来没有这个key,那么这个key的值现在就是increment,同样如果key原来不是int,那也会报错

decr key:使得key自减,也就是key的值-1;,如果原来没有则为-1,如果原来有,但不是int也会报错

decrby key decrement:(就不说了,跟上面对比



setrange  key offset value:表示value从下标为offset的地方开始替代,例如:如果key原来的值为aaaa,那么执行setrange key 0 bb后,key的值变为bbaa

List(下标从0开始):

是一个双端链表,它既可以作为栈,也可以作为队列

lpush key value1 value2....:把值插入到链表的头部,lpush key 1  2 3(结果为 3,2,1)

rpush key value1 value2....:把值插入到链表的尾部,rpush key 1 2 3(结果为1,2,3)

lpop key:返回并删除链表头部元素

rpop key:返回并删除链表尾部元素

llen  key:返回链表的个数

lindex key index:返回链表下标为index的值

lrange key  start stop:返回链表下标从start到stop的值(以start为准),如果start大于链表的长度+1,则结果为空。例如:如果key为1,2,3;那么lrange key 3 4 的值就是空

lrem key count value:删除链表中为value的值,删除的个数为绝对值count;这里分三种情况:count=0全部删除,count>0从表头删除,count<0从表尾删除

Set:

是无序、值唯一的string类型的元素的集合

sadd key value1 value2 value3...:往集合里面添加元素,如果值重复,只取一个,sadd key 1 2 2 3,结果为1,2,3

smembers key:获取集合里面所有的元素

scard key:返回集合总的个数

serm key value:删除集合值为value的值

spop key:删除集合中的随机的一个数

sinter key1 key2:求key1,key2的交集

sunion key1 key2:求key1,key2的并集

sdiff key1 key2:求key1,key2的差集,例如:key1 的值为1 2 3 ,key2的值为2 4,那么交集就是1 3

Sorted Set(根据score(权重)来进行排序的,默认是升序,名次从0开始):

是有序、值唯一的string类型的元素的集合(是list 跟hash结合产生)

zadd key score  value:添加元素,score可以重复,例如zadd key 0 1 ,zadd key 1 2 ,zadd key 0 3;结果是1 3 2

zrange key start stop   (WITHSCORES):打印名次在[start,stop]的元素,如果加上WITHSCORES就会把value对应的score打印出来,最好是加上WITHSCORES,这样看的更仔细

zrank key me
aa27
mber:查询member这个元素的名次(升序)

zrevrank key member:查询member这个元素的名次(倒序)

zrem key value:删除值为value的元素

zremrangebyscore key min max:根据score来删除元素,score的范围在[min,max]之间

zremrangerbyrank key start end:根据排名来删除元素,排名的范围在[start,end]之间

zcrad key:返回集合中元素的个数

Hashes:

是一个string类型的字段跟string类型的值之间的映射

hset key field value:设置key的field的值为value(重复设置,新值会取代旧值),例如hset key name hongdingyi,那么key里面的name的值就是hongdingyi

hmset key field1 value1 field2 value2:设置多个字段

hget key field:获取key里面字段field的值,例如hget key name,结果就是hongdingyi

hmget key field1 field2:获取多个字段值

hexists key field:检测field这个字段是否存在

hlen key:查看key里面有多少个field

hdel key field:删除key里面指定的field

hkeys key:返回key里面所有的field

hvals key:返回key里面所有的value

hgetall key:将key里面的filed跟value全部显示出来

以上就是Redis五种常用数据类型的基本操作,下面再补几个其他常用命令:

type  key:检查key的类型

del key:删除key

rename key newkey:更改名字

ping:用于测试客户端是否成功连接服务器,返回PONG代表成功

quit:退出连接

dbsize:查看当前数据库总共有多少个key

fflushdb:删除当前数据库所有的key

save:保存rdb快照

哦了,到这里,这篇文章就结束了,了解更多操作,更多细节,请点击Redis中文帮助文档Redis英文帮助文档

下一篇将讲述客户端如何通过API操作Redis!

笔者语录**&**

最后我想说说我现在的心情:真的很开心,晚上可以好好的睡一觉了。因为刚刚在写这篇文章的时候,一位朋友过来看我写,我告诉他我上一篇文章被我不小心删了,他突然说了一句,那你可以把刚刚删掉的内容复制(虽然删掉,不能恢复,但自己是可以看到那篇文章的)过来啊,重新发布啊,我靠,我顿时脑洞大开,抱着他

,真的太感谢他了,哎,我当时这么就没想到啊,看来我这脑子还有带开发啊,哈哈。。。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息