四时宝库

程序员的知识宝库

学习笔记redis篇~数据类型(redis五中数据类型的实现)

字符串(string)

  • 字符串是Redis的基本数据类型,使用SET生成的键值对,其value就是字符串类型.。字符串类型可以存储任何形式的字符串
  • -》 SET num 1
  • -》 APPEND num 2 # 添加字符(追加字符)执行后num的值为12
  • # 如果value值是数字,还可以进行加减
  • -》 INCR num #加 1,执行后num的值为13
  • -》 DECR num #减 1,执行后num的值为12
  • -》 INCRBY num 10 #加10,执行后num的值为22
  • -》 DECRBY num 5 #减5,执行后num的值为17

列表(list)

添加元素

  • ## LPUSH 左边添加(left push,往左边添加),栈先进后出
  • -》 LPUSH myli 3 4 5 # 添加方向 5←4←3
  • ## RPUSH 右边添加(right push,往右边添加),队列先进先出
  • -》 RPUSH myli 1 2 # 添加方向 1→2

弹出元素

  • -》 LPOP myli # 从左边删除1个元素
  • -》 RPOP myli # 从右边删除1个元素
  • LREM key count value
  • ##当count>0时LREM命令会从列表左边开始删除前count个值为value的元素
  • -》 LREM myli 2 1 #从左边删除 2 个值为 1 的元素
  • ##当count<0时LREM命令会从列表右边开始删除前|count|个值为value的元素
  • -》 LREM myli -1 2 #从右边删除 1 个值为 2 的元素
  • ##当count=0是LREM命令会删除所有值为value的元素
  • -》 LREM myli 0 4 #删除myli里所有值为 4 的元素

获取列表长度

  • -》 LLEN myli
  • 查看指定位置元素
  • -》 LINDEX myli 3

获取列表片段

  • -》 LRANGE myli 0 5
  • -》 LRANGE myli 0 -1 # -1 表示最后一个

哈希类型(hash)

  • 散列类型(hash)的键值也是一种字典结构,其存储了字段(field)和字段值的映射,但字段 值只能是字符串,不支持其他数据类型,换句话说,散列类型不能嵌套其他的数据类型。一个散列类型键可以包含至多232?1个字段。

设置和获取

基本语法

  • HSET key field value #设置
  • HGET key field #获取
  • -》 HSET bd name budong #设置键bd,字段name,值为budong
  • -》 HSET bd age 18 #设置键bd,字段age,值为18
  • -》 HGET bd name #获取键bd,字段name的值
  • HMSET key field value [field value … ]
  • -》 HMSET ks name kongshan age 18 #设置多个
  • HMGET key field [ field … ]
  • -》 HMGET ks name age #获取多个
  • -》 HKEYS bd # 获取所有keys
  • -》 HVALS bd # 获取所有value
  • HGETALL key
  • -》 HGETALL bd #获取所有key 和 value
  • -》 HLEN bd #获取filed个数

判断字段是否存在

  • HEXISTS key field
  • -》 HEXISTS bd size #存在返回1 不存在返回0
  • -》 HSETNX bd size 180 #不存在是添加,存在什么也不做

增加数字

  • HINCRBY key field increment
  • -》 HINCRBY bd age 2 #age字段值+2,值可以是负数(表示减数字)

删除字段

  • HDEL key field [field…] #删除一个/多个字段
  • -》 HDEL bd size

集合(set)

增加、查找和删除元素

  • SADD key member [member …] #增加元素
  • -》 SADD se1 1 2 3 a b
  • -》 SADD se2 a b c 1 2
  • SREM key member [member …] #删除元素
  • -》 SREM se1 2 #删除指定元素
  • SPOP key [cout] #随机删除count个元素
  • -》 SPOP se2 2 #随机删除2个元素
  • -》 SISMEMBER se1 1 #判断元素是否存在
  • SMEMBERS key #获取所有元素
  • -》 SMEMBERS se1
  • SCARD key #获取集合元素个数
  • -》 SCARD se1

随机获取count 个数元素 count 为正数,返回count个不重复数,为负数可能出现重复数据

  • SRANDMEMBER key [count]
  • -》 SRANDMEMBER se2 3 #返回3个不重复数
  • -》 SRANDMEMBER se2 -3 #返回3个可能重复数

交集

  • SINTER key1 key2 ..
  • -》 SINTER se1 se2 #求se1 和 se2 交集
  • SINTERSTORE destination key1 key2 ..
  • -》 SINTERSTORE se3 se1 se2 #将交集保存到 se3中

并集

  • SUNION key1 key2
  • -》 SUNION se1 se2
  • SUNIONSTORE destination key1 key2
  • -》 SUNIONSTORE se4 se1 se2 #将并集保存到se4

差集

  • SDIFF key1 key2
  • -》 SDIFF se1 se2
  • SDIFFSTORE destination key1 key2
  • -》 SDIFFSTORE se5 se1 se2 #将差集保存到se5

有序集合(zset)

概念:

  • 在集合类型的基础上有序集合类型为集合中的每个元素都关联了一个分数,这使得不仅可以完成插入、删除和判断元素是否存在等集合类型支持的操作,还能够获得分数最高(或最低)的前N个元素、获得指定分数范围内的元素等与分数有关的操作。虽然集合中每个元素都是不同的,但是它们的分数却可以相同

特点与差别

  • 列表类型是通过链表实现的,获取靠近两端的数据速度极快,而当元素增多后,访问中间数据的速度会较慢,所以它更加适合实现如“新鲜事”或“日志”这样很少访问中间元素的应用。
  • 有序集合类型是使用散列表和跳跃表(Skiplist)实现的,所以即使读取位于中间部分的数据速度也很快(时间复杂度是O(log(N)))。
  • 列表中不能简单地调整某个元素的位置,但是有序集合可以(通过更改这个元素的分数)。
  • 有序集合要比列表类型更耗费内存。有序集合类型算得上是Redis的5种数据类型中最高级的类型了,可以与列表类型和集合类型对照理解。


增加、获取和删除元素

  • ZADD key score member [score member … ]
  • -》 ZADD math 90 bd 86 ks 88 yf
  • ZADD 还可以用双精度浮点数,+inf 表示正无穷 -inf 表示负无穷
  • ZCARD key
  • -》 ZCARD math #查看元素个数
  • ZSCORE key member #获取元素分数
  • -》 ZSCORE math bd
  • 从小到大打印 加上WITHSCORES 同时打印分数
  • ZRANGE key start stop [WITHSCORES]
  • -》 ZRANGE math 0 -1
  • ZREVRANGE key start stop [WITHSCORES] #从大到小打印
  • -》 ZREVRANGE math 0 -1
  • ZREM key member #移除元素
  • -》 ZREM math yf

获取指定分数范围的元素

  • ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
  • 按照元素分数从小到大的顺序返回分数在min和max之间(包含min和max) LIMIT 向后偏移offset个元素,并且只获取前count个元素
  • -》 ZRANGEBYSCORE math 70 90
  • -》 ZRANGEBYSCORE math 70 (90 LIMIT 1 2 #不取90

获取指定分数范围的元素个数

  • ZCOUNT key min max
  • -》 ZCOUNT math 70 90

增加某个元素的分数

  • ZINCRBY key increment member
  • -》 ZINCRBY math 5 bd # 增加5分,分数也可以是负数(表示减分)

按照排名范围删除元素

  • ZREMRANGEBYRANK key start stop
  • -》 ZADD test 1 a 2 b 3 c 4 d 5 e 6 f #创建有序集合test
  • -》 ZREMRANGEBYRANK test 0 2 #删除排名1到3 的元素
  • -》 ZRANGE test 0 -1 #查看有序集合剩余元素

按照分数范围删除元素

  • ZREMRANGEBYSCORE key min max
  • -》 ZADD test 1 a 2 b 3 c 4 d 5 e 6 f
  • -》 ZREMRANGEBYSCORE test (3 5 #删除分数大于3小于5的元素

计算有序集合的交集

  • ZINTERSTORE destination numkeys key [key…][WEIGHTS weight[weight…]] [AGGREGATE SUM|MIN|MAX]
  • 计算多个有序集合的交集并将结果存储在destination键中(同样以有序集合类型存储),
  • 返回值为destination键中的元素个数。
  • destination键中元素的分数是由AGGREGATE参数决定的,默认是SUM
  • -》 ZADD s2 10 a 20 b
  • -》 ZINTERSTORE s3 2 s1 s2 # 2 是指有几个集合交集的意思
  • 同样也有并集 ZUNIONSTORE 用法类似,就不在再赘述

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接