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

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

2015-12-15 20:36 471 查看
一、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支持的数据类型和使用方法(二)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: