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

Redis系列二:Redis支持的数据类型和使用方法(一)

2016-01-19 00:00 1066 查看
一、String类型

String类型是二进制安全的,使用String类型缓存一些静态文件,如图片、CSS,可以提高网站的运行速度

1)常用命令

127.0.0.1:6379> set booka "Redis" OK 127.0.0.1:6379> setnx booka "test" (integer) 0
127.0.0.1:6379> get booka "Redis"
127.0.0.1:6379> getset bookb "php" (nil) 127.0.0.1:6379> getset booka "php"
"Redis"
127.0.0.1:6379> get booka "php"
127.0.0.1:6379>


set booka "Redis" : 设置key为booka,值为Redis

setnx booka "test":setnx命令,如果booka不存在,则设置key为booka,值为test的string类型的值;如果booka存在则返回0

get booka:获取key为booka的值

getset bookb "php":getset命令,先获取key为bookb的key值,如果没有则返回nil,如果有则将key为bookb的value设置为php

127.0.0.1:6379> mset test1 "hello" test2 "hello2" test3 "hello3" OK 127.0.0.1:6379> get test3 "hello3"
127.0.0.1:6379> get test2 "hello2"
127.0.0.1:6379> get test3 "hello3"
127.0.0.1:6379> mget test1 test2 test3 1) "hello"
2) "hello2"
3) "hello3"
127.0.0.1:6379>


mset 命令:一次设置多个key值,成功返回ok,表示所有值都设置了;失败返回0,表示没有值被设置

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

127.0.0.1:6379> mget test1 test2 test3 1) "hello"
2) "hello2"
3) "hello3"
127.0.0.1:6379> msetnx test3 "msetnx" test4 "hello4" (integer) 0
127.0.0.1:6379> mget test1 test2 test3 test4 1) "hello"
2) "hello2"
3) "hello3"
4) (nil) 127.0.0.1:6379> msetnx test5 "msetnx" test4 "hello4" (integer) 1
127.0.0.1:6379> mget test4 test5 1) "hello4"
2) "msetnx"
127.0.0.1:6379>


msetnx命令:一次设置多个key值,如果key有存在的,返回0;否则返回1

127.0.0.1:6379> set int_key 1 OK 127.0.0.1:6379> get int_key "1"
127.0.0.1:6379> incr int_key (integer) 2
127.0.0.1:6379> get int_key "2"
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379> get test1 "hello"
127.0.0.1:6379>
127.0.0.1:6379> incr test1 (error) ERR value is not an integer or out of range 127.0.0.1:6379>


incr 命令对key值加1,并返回新值;如果incr不是一个int的value则会返回错误;incr一个不存在的key,则设置key的value为1

decr命令和incr命令想法,对key减一

127.0.0.1:6379> get int_key "2"
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379> incrby int_key 2 (integer) 4
127.0.0.1:6379> get int_key "4"
127.0.0.1:6379>


incrby 命令,对key值追加一个指定的整数,key不存在时设置key,并认为原来的value为0

decrby命令和incrby相反

二、List类型

list类型指的是key对应的value是一个双向链表结构,所以list类型提供链表支持的所有操作。

127.0.0.1:6379> lpush list_key list_value #向key对应的list头部添加一个字符串 (integer) 1
127.0.0.1:6379> lpush list_key list_value_center #向key对应的list尾部添加一个字符串 (integer) 2
127.0.0.1:6379>
127.0.0.1:6379> llen list_key #返回key对应的list的长度,如果key不存在返回0,如果key对应的类型不是list返回错误 (integer) 2
127.0.0.1:6379> lpop list_key #从list头部删除并返回删除元素 "list_value_center"
127.0.0.1:6379> lpop list_key "list_value"
127.0.0.1:6379> lpop list_key (nil) 127.0.0.1:6379> llen list_key (integer) 0
127.0.0.1:6379> lpush list_key list_value1 (integer) 1
127.0.0.1:6379> lpush list_key list_value2 (integer) 2
127.0.0.1:6379> lpush list_key list_value3 (integer) 3
127.0.0.1:6379> lpush list_key list_value4 (integer) 4
127.0.0.1:6379> lrange list_key 1 2 #返回key为list_key指定区间(1,2)的元素,下标从0开始,负值表示从列表的尾部开始计算,-1表示倒数第一个元素,key不存在返回空列表 1) "list_value3"
2) "list_value2"
127.0.0.1:6379> ltrim list_key 2 3 #截取key为list_key指定区间(2,3)的元素 OK 127.0.0.1:6379> lrange list_key 0 5
1) "list_value2"
2) "list_value1"
127.0.0.1:6379> lset list_key 2 hello #设置key为list_key指定下标2的value为hello (error) ERR index out of range 127.0.0.1:6379> lset list_key 1 hello OK 127.0.0.1:6379> lrange list_key 0 5
1) "list_value2"
2) "hello"
127.0.0.1:6379>


另外列表还有下面几个命令

rpop key:从list尾部删除并返回删除的元素

blpop key1 ... keyn timeout:从左到右扫描 key1 ... keyn ,返回对第一个非空的list进行lpop操作并返回,如果所有的list都是空或者不存在,阻塞timeout秒,timeout为0表示

一直阻塞。阻塞时,如果有其他的客户端对 key1 ... keyn 中任意一个key进行push操作,阻塞解除并返回。如果超时则返回nil

brpop key1 ... keyn timeout:功能与blpop类似,blpop从头部删除,brpop从尾部删除

三、set类型

set类型是一种无序集合。set数据类型可以快速查找元素是否存在,用于记录一些不能重复的数据。如网站用户名不能重复。

127.0.0.1:6379> sadd set_key 1 #添加一个string元素到key为set_key对应的集合中 (integer) 1
127.0.0.1:6379> scard set_key #返回set元素的个数,如果set为空或者key不存在则返回0 (integer) 1
127.0.0.1:6379> sadd set_key 2 (integer) 1
127.0.0.1:6379> scard set_key (integer) 2
127.0.0.1:6379> sismember set_key 3 #判断3是否存在于无序集合set_key中,存在返回1,不存在或者key对应的set集合不存在则返回0 (integer) 0
127.0.0.1:6379> sismember set_key 1 (integer) 1
127.0.0.1:6379> smembers set_key #返回key对应set的所有元素,结果是无序的 1) "1"
2) "2"
127.0.0.1:6379> sadd set_key 3 (integer) 1
127.0.0.1:6379> smembers set_key 1) "1"
2) "2"
3) "3"
127.0.0.1:6379> srem set_key 2 #从set_key对应的集合中移除2这个元素,如果2不存在或者set_key不存在则返回0 (integer) 1
127.0.0.1:6379> smembers set_key 1) "1"
2) "3"
127.0.0.1:6379>


其他命令

spop key:删除并返回key对应的集合中随机一个元素

srandmember key:随机取集合中的一个元素,但不删除元素

smove srckey dstkey member:从scrkey对应的集合中移除member并添加到dstkey对应的集合中

sinter key1 key2 ... key3:返回所有给定key的交集

sinterstore dstkey key1 key2 ... key3:同sinter,并将交集存到dstkey对应的集合中

sunion key1 key2 ... key3:返回所有给定key的并集

sunionstore dstkey key1 key2 ... key3:同sunion,并把并集保存到dstkey 对应的集合中

sdiff key1 key2 ... key3:返回所有给定key的差集

sdiffstore dstkey key1 key2 ... key3:同sdiff ,并把并集保存到dstkey 对应的集合中

Redis系列一:初识Redis

Redis系列二:Redis支持的数据类型和使用方法(一)

Redis系列二:Redis支持的数据类型和使用方法(二)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: