Redis-02-Redis数据类型与对不同类型数据的操作
2017-12-26 15:37
399 查看
Redis数据库支持的数据类型
Redis数据库是一种高级的key-value存储系统,其中value支持五种数据类型:1)字符串(String)
2)哈希类型(hash)
3)字符串列表(list)
4)字符串集合(set)
5)有序字符串集合(sorted set)
一.字符串类型数据
1.1 字符串类型简介
字符串类型是Redis中最基础的数据类型,在Redis中String类型数据是二进制安全的,所以它存入和获取的数据相同。在Redis中,字符串类型的value最多可以容纳的数据长度是512M1.2 在Redis中操作字符串类型数据
1.存入数据
set key value 命令:将一组key-value存入Redis2.取出数据
get key 命令:获取key对应的value值如果与key对应的value不是String类型的数据,则会报错,因为get命令只能用来取出String类型数据。
3.修改数据
getset key value 命令:将key对应的值更改为一个新的值valueappend key value 命令:如果key存在,在原有的value后增加拼装字符串。若key不存在,则新增一个key-value,此命令常用来修改value值
4.删除数据
del key 命令:删除指定的key5.数值增减
incr key 命令:指定key的value原子性增1,如果目标key不存在,则由默认值0增加为1。如果value值不能转换为整型。则返回错信信息decr key 命令:指定key的value原子性减1,如果目标key不存在,则由默认值0减少为-1。如果value值不能转换为整型。则返回错信信息
incrbe key increment 命令:指定key的value原子性增加increment ,如果目标key不存在,则由默认值0增加为increment 。如果value值不能转换为整型。则返回错信信息
decrby key increment 命令:指定key的value原子性减少increment ,如果目标key不存在,则由默认值0减少为-increment 。如果value值不能转换为整型。则返回错信信息
二.哈希类型数据
2.1 哈希类型简介
Redis中的Hashes类型可以看成和String类型一样的key-value类型的结构,不同的是这里的value值也是一个Map容器,即value中存放的是filed-value映射关系。因此该类型非常适合于存储值对象的信息。如Username、Password和Age等。如果 Hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间。每一个Hash 可以存储4294967295个键值对。2.2 在Redis中操作哈希类型数据
1.存入数据
hset key field value 命令:存入数据,key对应一个field-value(键值对)hset key field1 value1 field2 value2 … 命令:存入数据,为一个key设置多个field-value(键值对)
2.取出数据
hget key field 命令:获取指定的key中的field的值hmget key field1 field2 … 命令:获取key中的多个filed-value
hgetall key 命令:获取key中的所有filed-vaule
3.修改数据
hmset key field1 field2 … 命令:设置key中的多个filed-value4.删除数据
hdel key field1 field2 … 命令:删除key中的多个filed-valuedel key 命令:删除整个List
5.数值增减
hincrby key field increment 命令:设置key中filed的值增加increment6.其他相关命令
hexists key field 命令:判断指定的key中的filed是否存在hlen key 命令:获取key所包含的field的数量
hkeys key 命令:获取所有的key
hval key 命令:获取所有的value
c94d
三.链表类型数据
3.1 List类型简介
在Redis中,List类型是按照插入顺序排序的字符串链表。和数据结构中的栈一样,我们可以在其顶部添加新的元素,与传统的栈不同的是List类型可以从两端添加数据而不是一端。List类型数据也是一个key对应一个value,这个value就是一个和双向栈功能一样的存储结构
在插入数据时,如果目标键并不存在,Redis将为该键创建一个新的链表。与此相反,如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除。List中可以包含的最大元素数量是4294967295
从元素插入和删除的效率视角来看,如果我们是在链表的两头插入或删除元素,这将 会是非常高效的操作,即使链表中已经存储了百万条记录,该操作也可以在常量时间内完成。然而需要说明的是,如果元素插入或删除操作是作用于链表中间,那将会是非常低效的。相信对于有良好数据结构基础的开发者而言,这一点并不难理解
3.2 在Redis中操作List类型数据
1.存入数据
lpush key value1 value2 … 命令:在指定的key所关联的list的头部插入所有的 values,如果该key不存在,该命令在插入的之前创建一个与该key关联的空链 表,之后再向该链表的头部插入数据。插入成功,返回元素的个数rpush key value1 value2 … 命令:在指定的key所关联的list的尾部插入所有的 values,如果该key不存在,该命令在插入的之前创建一个与该key关联的空链 表,之后再向该链表的尾部插入数据。插入成功,返回元素的个数
2.取出数据
lrang key start end 命令:获取链表中从start到end的元素的值,start、end可 为负数,若为-1则表示链表尾部的元素,-2则表示倒数第二个,依次类推…3.修改数据
4.删除数据
lpop key 命令:删除右边第一个元素,如果目标key不存在,返回nil;若存在,返回并删除key对应的List集合的右边第一个元素rpop key 命令:删除左边第一个元素,如果目标key不存在,返回nil;若存在,返回并删除key对应的List集合的左边第一个元素
5.数值增减
6.其他相关命令
llen key 命令:返回指定key对应的链表中元素的数量四.Set类型数据
4.1 Set类型简介
在Redis中,我们可以将Set类型看作为没有排序的字符集合,和List类型一样,我 们也可以在该类型的数据值上执行添加、删除或判断某一元素是否存在等操作。需要 说明的是,这些操作的时间是常量时间。Set可包含的最大元素数是4294967295。和List类型不同的是,Set集合中不允许出现重复的元素。和List类型相比,Set类 型在功能上还存在着一个非常重要的特性,即在服务器端完成多个Sets之间的聚合计 算操作,如unions、intersections和differences。由于这些操作均在服务端完成, 因此效率极高,而且也节省了大量的网络IO开销
4.2 在Redis中操作Set类型数据
1.存入数据
sadd key value1 value2 … 命令:向set中添加数据,如果该key的值已有则不会重复添加2.取出数据
smembers key 命令:获取set中所有的成员scard key 命令:获取set中所成员的数量
srandmember key 命令:随机返回set中的一个成员
3.修改数据
4.删除数据
srem key member1 member2 … 命令:删除set中指定的成员5.数值增减
6.其他相关命令
sismember key member 命令:判断参数中指定的成员是否在该set中,1表示存在,0表示不存在或者该key本身就不存在sdiff sdiff key1 key2 命令:返回key1与key2中相差的成员,而且与key的顺序有关,即返回差集
sdiffstore destination key1 key2 命令:将key1、key2相差的成员存储在destination上
sinter key1 key2 … 命令:返回key1和key2的交集
sinterstore destination key1 key2 命令:将key1和key2的交集存储在destination上
sunion key1、key2 命令:返回key1和key2的并集
sunionstore destination key1 key2 命令:将key1和key2的并集存储在destination上
五.Sorted-Sets类型数据
5.1 Sorted-Sets类型简介
Sorted-Sets和Sets类型极为相似,它们都是字符串的集合,都不允许重复的成员出 现在一个Set中。它们之间的主要差别是Sorted-Sets中的每一个成员都会有一个分 数(score)与之关联,这里的分数即权重的意思,Redis通过分数来为集合中的成员进行从小到大的排序。然 而需要额外指出的是,尽管Sorted-Sets中的成员必须是唯一的,但是分数(score) 却是可以重复的在Sorted-Set中添加、删除或更新一个成员都是非常快速的操作,其时间复杂度为 集合中成员数量的对数。由于Sorted-Sets中的成员在集合中的位置是有序的,因此, 即便是访问位于集合中部的成员也仍然是非常高效的。事实上,Redis所具有的这一 特征在很多其它类型的数据库中是很难实现的,换句话说,在该点上要想达到和Redis同样的高效,在其它数据库中进行建模是非常困难的
例如:游戏排名、微博热点话题等使用场景
5.2 在Redis中操作Sorted-Sets类型数据
1.存入数据
zadd key score1 member1 score2 member2 … 命令:将多个成员以及该成员的分数存放到sorted-set中2.取出数据
zcount key min max 命令:获取分数在[min,max]之间的成员3.修改数据
4.删除数据
5.数值增减
6.其他相关命令
zcard key 命令:获取集合中的成员数量zincrby key increment member 命令:设置指定成员的增加的分数
相关文章推荐
- 2、redis原生的命令操作不同数据类型
- Redis不同数据类型的常用操作
- php操作redis中的hash和zset类型数据的方法和代码例子
- Redis常用数据类型介绍、使用场景及其操作命令
- Redis常用数据类型介绍、使用场景及其操作命令
- php操作redis中的hash和zset类型数据的方法和代码例子
- redis:hash数据类型与操作
- redis基本数据类型操作之 list
- 通过Jedis操作Redis的五种数据类型
- redis: sorted set数据类型与操作
- Redis----sorted set数据类型操作
- Redis数据类型操作(二) —— Hash
- Redis数据类型操作(三) —— List
- Redis有序集合数据类型操作命令
- Redis笔记二之Redis命令操作简介及五种value数据类型
- Redis hash数据类型操作
- 4.Redis学习-hash数据类型操作
- Redis 键值数据类型及基本操作
- Redis数据类型操作。(Jedis)
- 2.Redis数据类型操作命令