Redis的五种数据类型(一)

Redis的五种数据类型(一)
                                   5种数据类型:字符串、哈希、链表、集合、有序集合。
一、字符串类型(String)
字符串类型是Redis中最为基础的数据存储类型,字符串在Redis中是二进制保存,因此是安全的,这便意味着该类型存入和获取的数据相同。
在Redis中字符串类型的Value最多可以容纳的数据长度是512M。
1、字符串类型的常用命令

(1)set key value
设定key持有指定的字符串value,如果该key存在则进行覆盖操作。总是返回”OK”。注意:value值可以可以不用添加双引号。value值在redis中都是以字符串的形式进行存储;
127.0.0.1:6379> set name "zhangsan"
OK
127.0.0.1:6379> set addr shanghai
OK
127.0.0.1:6379> set age 13
OK

(2)get key
获取key的value。如果与该key关联的value不是String类型,redis将返回错误信息,因为get命令只能用于获取String value;如果该key不存在,返回(nil)。
127.0.0.1:6379> get name
"zhangsan"
127.0.0.1:6379> get addr
"shanghai"
127.0.0.1:6379> get age
"13"
127.0.0.1:6379> get company
(nil)

(3)del key
根据指定的key删除对应的数据。
127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> del name
(integer) 0

(4)设置多个值:mset key1 value1 [key2 value2 ...]
127.0.0.1:6379> mset name zhangsan age 13
OK

(5)获取多个值:mget key1 [key2...]
127.0.0.1:6379> mget name age
1) "zhangsan"
2) "13"
(6)设置值(返回原值):getset key value

127.0.0.1:6379> getset name lisi
"zhangsan"
127.0.0.1:6379>

二、Hash类型
Redis中的Hash类型可以看成具有String Key和String Value的map容器。所以该类型非常适合于存储值对象的信息。
如username、password和age等。如果Hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间。每一个Hash可以存4294967295个键值对。
1、Hash类型的常用命令

(1)hset key field value   为指定的key设定field/value对(键值对)。
127.0.0.1:6379> hset stu name zhangsan
(integer) 1
127.0.0.1:6379>

(2)hget key field      返回指定的key中的field的值
127.0.0.1:6379> hget stu name
"zhangsan"
127.0.0.1:6379>

(3) hmset key  field value[field2 value2 ...]    批量给指定key设置多个key-value值
127.0.0.1:6379> hmset stu name zhangsan age 13
OK
127.0.0.1:6379>

(4)hmget key  field[field2  ...]  批量获取指定key的多个key-value值
127.0.0.1:6379> hmget stu name age
1) "zhangsan"
2) "13"
127.0.0.1:6379>

(5)hgetall key   批量获取指定key的所有key-value值
127.0.0.1:6379> hgetall stu
1) "name"
2) "zhangsan"
3) "age"
4) "13"
127.0.0.1:6379>
(6)hdel key field [field2 … ]   可以删除一个或多个字段,返回值是被删除的字段个数

127.0.0.1:6379> hdel stu name age
(integer) 2
127.0.0.1:6379>

三、链表类型list
List就是链表,相信略有数据结构知识的人都应该能理解其结构。使用List结构,我们可以轻松地实现最新消息排行等功能。
List的另一个应用就是消息队列,可以利用List的PUSH操作,将任务存在List中,然后工作线程再用POP操作将任务取出进行执行。
Redis还提供了操作List中某一段的api,你可以直接查询,删除List中某一段的元素。
1、链表类型的常用命令

(1)头部插入  lpush key value1 value2 …
在指定的key所关联的list的头部插入所有的values,如果该key不存在,该命令在插入的之前创建一个与该key关联的空链表,
之后再向该链表的头部插入数据。如果插入成功,返回元素的个数。
127.0.0.1:6379> lpush stus zhagnsan lisi wangwu
(integer) 3
127.0.0.1:6379>

(2)尾部插入  rpush key value value value
在指定的key对应的list的尾部插入所有的value,如果该key不存在,该命令在插入之前创建一个与该key对应的空链表,
再从尾部插入数据。如果插入成功,返回元素的个数。
127.0.0.1:6379> rpush strs zhangfei guanyu liubei
(integer) 3
127.0.0.1:6379>

(3)查看列表   lrange key 0 -1  和 lrange key start end
查看list中的所有数据;
127.0.0.1:6379> lrange stus 0 -1
1) "wangwu"
2) "lisi"
3) "zhagnsan"
127.0.0.1:6379>

查看list中索引为start到end的数据;
127.0.0.1:6379> lrange stus 0 2
1) "wangwu"
2) "lisi"
3) "zhagnsan"
127.0.0.1:6379>

(4)从list头部取出元素  lpop key
返回并弹出指定的key关联的链表中的第一个元素,即头部元素。如果该key不存在,返回nil;若key存在,则返回链表的头部元素。
127.0.0.1:6379> lpop stus
"wangwu"
127.0.0.1:6379>

(5)从list尾部取出元素  rpop key
127.0.0.1:6379> rpop stus
"zhagnsan"
127.0.0.1:6379>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章