Redis数据类型

来源:互联网 发布:捍卫者软件 编辑:程序博客网 时间:2024/05/29 06:44

Redis数据类型

  • Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)

string

  • stringredis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value
  • string类型是二进制安全的。意思是redisstring可以包含任何数据。比如jpg图片或者序列化的对象 。
  • string类型是Redis最基本的数据类型,一个键最大能存储512MB
127.0.0.1:6739 > set name elvisOK127.0.0.1:6739 > get name"elvis"127.0.0.1:6739 > getset name shunzi"elvis"127.0.0.1:6739 > get name"shunzi"127.0.0.1:6739 > del name(interger) 1127.0.0.1:6739 > get name(nil)// 使用自增自减符,若变量不存在则初始化为0 127.0.0.1:6739 > incr num(interger) 1127.0.0.1:6739 > get num"1"127.0.0.1:6739 > incr num(interger) 2127.0.0.1:6739 > get num"2"127.0.0.1:6739 > incr name(error) ERR value is not an integer or out of range127.0.0.1:6739 > decr num(interger) 1127.0.0.1:6739 > get num"1"127.0.0.1:6739 > decr num2(interger) -1// incryby decrby127.0.0.1:6739 > incrby num 5(interger) 6127.0.0.1:6739 > incrby num3 5(interger) 5127.0.0.1:6739 > decrby num 3(interger) 3127.0.0.1:6739 > decrby num4 3(interger) -3// append返回拼接的字符串长度127.0.0.1:6739 > append num 5(interger) 2127.0.0.1:6739 > get num"35"127.0.0.1:6739 > append num5 123(interger) 3127.0.0.1:6739 > get num5 "123"

Hash

  • Redis hash 是一个键值(key=>value)对集合。
  • Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。

- 每个 hash 可以存储 232 -1 键值对(40多亿)。

  • HSET key field value//设置键以及其中的属性(单个属性)
  • HMSET key field value key value...//设置键以及其中的属性(多个属性)
  • HGETALL key// 获取该键对应的所有属性名和属性值
  • HGET key field //获取该健对应的属性对应的值
  • HMGET key field1 field2//获取该键对应的多个属性的值
  • HDEL key field1 field2//删除对应的键对应的属性
  • del key//删除键对应的value
  • HEXISTS key field//判断键对应的对象中是否存在field属性,存在返回1 否返回0
  • HLEN key//获取键对应的属性个数
  • hkeys key//获取键对应的属性的属性名
  • hvals key//获取键对应的属性 的属性值
127.0.0.1:6379> HMSET user:1 username zhangjianshun password 123456 age 18 college UESTCOK127.0.0.1:6379> HGETALL user:11) "username"2) "zhnagjianshun"3) "password"4) "123456"5) "age"6) "18"7) "college"8) "UESTC"127.0.0.1:6379> HGET user:1 college"UESTC"127.0.0.1:6379> hincrby user:1 age 2(interger) 20127.0.0.1:6379> hexists user:1 username(interger) 1

List

  • Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
  • 列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。
  • lpush key value1 value2 ...//从左开始添加
  • rpush key value1 value2 ...//从右开始添加
  • lrange key index1 index2//从左开始查看index1 ~ index2,若index为负数,则倒数对应的个数
  • lpop key//左端弹出,之后list中该元素
  • rpop key//右端弹出
  • llen key//获取元素个数
  • lpushx key value//仅仅当key存在时才进行插入,同理rpushx
  • lremo key count value//删除指定count个值为value的元素,若count<0,删除顺序反向,若count=0,则删除所有的对应的value
  • lset key index value//设定对应的角标的值,index若为-1,则为末尾

- linsert key before/after value newValue//在指定元素前后插入新元素

常用于消息队列的使用场景
  • rpoplpush key1 key2//弹出key1的一个元素压入key2
redis 127.0.0.1:6379> lpush database redis(integer) 1redis 127.0.0.1:6379> lpush database mongodb(integer) 2redis 127.0.0.1:6379> lpush database rabitmq(integer) 3redis 127.0.0.1:6379> lrange database 0 101) "rabitmq"2) "mongodb"3) "redis"redis 127.0.0.1:6379>

Set

  • RedisSetstring类型的无序集合。不允许出现重复的元素,
  • 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。

- 集合中最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)。

  • sadd key member// 添加一个string元素到,key对应的set集合中,成功返回1,如果元素已经在集合中返回0,key对应的set不存在返回错误。
  • srem key value1 value2//删除key对应的set中指定的value
  • smembers key//列举key对应的set中的所有value
  • sismember key value//判断在该集合中是否存在该元素,返回布尔值
  • sdiff key1 key2//两个集合的差集运算
  • sinter key1 key2//两个集合的交集运算
  • sunion key1 key2//两个集合的并集运算,自动去重
  • scard key//集合对应的元素个数
  • srandmember key//随机返回集合中的成员
  • sdiffstore key1 key2 key3//求交集之后存储到kwy3,同理差集并集
应用场景
  • 获取唯一性数据
  • 用于维护数据对象之间的关联关系(集合运算)
redis 127.0.0.1:6379> sadd runoob redis(integer) 1redis 127.0.0.1:6379> sadd runoob mongodb(integer) 1redis 127.0.0.1:6379> sadd runoob rabitmq(integer) 1redis 127.0.0.1:6379> sadd runoob rabitmq(integer) 0redis 127.0.0.1:6379> smembers runoob1) "rabitmq"2) "mongodb"3) "redis"

zset (sorted set:有序集合)

  • Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
  • 不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
  • zset的成员是唯一的,但分数(score)却可以重复。
  • zadd key score member//添加元素到集合,元素在集合中存在则更新对应score
  • zscore key member//获取对应的分数
  • zcard key//获取对应的元素个数
  • zrem key mem1 mem2//删除集合中对应的元素
  • zrange key index1 index2//显示对应的下表范围内的元素,可使用参数withscores来决定是否显示对应的参数。默认由小到大排序
  • zrevrange key index1 index2//从大到小
  • zrenrangebyrank key index1 index2//根据顺序删除指定范围的元素
  • zrenrangebyscore key index1 index2//根据分数范围删除指定的元素
  • zrangebyscore key1 index1 index2 withscores//显示分数在指定范围内的元素,还可以使用limit index1 index2限定返回的个数
  • zincrby key score member//指定成员的分数加分score

- zcount key score1 score2//显示指定的分数范围内的元素个数

应用场景:
  • 积分排行榜
  • 构建数据索引
redis 127.0.0.1:6379> zadd runoob 0 redis(integer) 1redis 127.0.0.1:6379> zadd runoob 0 mongodb(integer) 1redis 127.0.0.1:6379> zadd runoob 0 rabitmq(integer) 1redis 127.0.0.1:6379> zadd runoob 0 rabitmq(integer) 0redis 127.0.0.1:6379> ZRANGEBYSCORE runoob 0 10001) "redis"2) "mongodb"3) "rabitmq"
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 中博瓷砖 中博课堂 中博物流 中博学院 中博家具 中博集团 中博卫浴 中博家居 中博置业 中博成通 中博豪园 中博传媒 中博会 辽中博翔赛鸽俱乐部 辽中博翔赛鸽31团队 中博职业技术学校 中博装饰口碑怎么样 中博物流查询 中博人才市场 上海中博学院 中博古玩鉴定 成都中博教育 中博物流电话 北大青鸟中博怎么样 中博信息技术研究院有限公司 中博信息技术研究院 中博家居广场 中博家具中心 中博整体卫浴 中博建设集团有限公司 中博腾应用科技大学 中博通信有限公司 圣都 华东理工大学中博学院 中卫 中卫公棚 银川中卫 中卫市 银川到中卫 宁夏中卫 中卫旅游