redis五大数据类型详解

字符串类型(string)

  • 特点
    1、字符串、数字,都会转为字符串来存储
    2、以二进制的方式存储在内存中

  • string常用命令
    #字符串操作
    1、set key value
    2、set key value nx
    3、get key
    3、mset key1 value1 key2 value2
    4、mget key1 key2 key3
    5、set key value nx ex seconds
    6、strlen key
    #返回旧值并设置新值(如果键不存在,就创建并赋值)
    7、getset key value
    #数字操作
    8、incrby key 步长
    9、decrby key 步长
    10、incr key
    11、decr key
    12、incrbyfloat key number#(可为正数或负数)
    #设置过期时间的两种方式
    #方式一
    1、set key value ex 3
    #方式二
    1、set key value
    2、expire key 5 # 秒
    3、pexpire key 5 # 毫秒
    #查看存活时间
    ttl key
    #删除过期
    persist key

  • string数据类型注意
    #key值取值原则
    1、key值不宜过长,消耗内存,且在数据中查找这类键值的计算成本高
    2、不宜过短,可读性较差
    #值
    1、一个字符串类型的值最多能存储512M内容

列表数据类型(List)

  • 特点
    1、元素是字符串类型
    2、列表头尾增删快,中间增删慢,增删元素是常态
    3、元素可重复
    4、最多可包含2^32 -1个元素
    5、索引同python列表

  • 列表常用命令
    #增
    1、从列表头部压入元素
    LPUSH key value1 value2
    2、从列表尾部压入元素
    RPUSH key value1 value2
    3、从列表src尾部弹出1个元素,压入到列表dst的头部
    RPOPLPUSH src dst
    4、在列表指定元素后/前插入元素
    LINSERT key after|before value newvalue
    #查
    5、查看列表中元素
    LRANGE key start stop
    #查看列表中所有元素: LRANGE key 0 -1
    6、获取列表长度
    LLEN key
    #删
    7、从列表头部弹出1个元素
    LPOP key
    8、从列表尾部弹出1个元素
    RPOP key
    9、列表头部,阻塞弹出,列表为空时阻塞
    BLPOP key timeout
    10、列表尾部,阻塞弹出,列表为空时阻塞
    BRPOP key timeout
    #关于BLPOP 和 BRPOP
    1、如果弹出的列表不存在或者为空,就会阻塞
    2、超时时间设置为0,就是永久阻塞,直到有数据可以弹出
    3、如果多个客户端阻塞再同一个列表上,使用First In First Service原则,先到先服务
    11、删除指定元素
    LREM key count value
    count>0:表示从头部开始向表尾搜索,移除与value相等的元素,数量为count
    count<0:表示从尾部开始向表头搜索,移除与value相等的元素,数量为count
    count=0:移除表中所有与value相等的值
    12、保留指定范围内的元素
    LTRIM key start stop
    LRTIM mylist1 0 2 # 只保留前3条
    #应用场景: 保存微博评论最后500条
    LTRIM weibo:comments 0 499
    #改
    13、LSET key index newvalue

散列数据类型(Hash)

  • 定义
    1、由field和关联的value组成的键值对
    2、field和value是字符串类型
    3、一个hash中最多包含2^32-1个键值对

  • 优点
    1、节约内存空间
    2、每创建一个键,它都会为这个键储存一些附加的管理信息(比如这个键的类型,这个键最后一次被访问的时间等)
    3、键越多,redis数据库在储存附件管理信息方面耗费内存越多,花在管理数据库键上的CPU也会越多

  • 缺点(不适合hash情况)
    1、使用二进制位操作命令:SETBIT、GETBIT、BITCOUNT等,如果想使用这些操作,只能用字符串键
    2、使用过期键功能:键过期功能只能对键进行过期操作,而不能对散列的字段进行过期操作

  • 基本命令操作
    #1、设置单个字段
    HSET key field value
    HSETNX key field value
    #2、设置多个字段
    HMSET key field value field value
    #3、返回字段个数
    HLEN key
    #4、判断字段是否存在(不存在返回0)
    HEXISTS key field
    #5、返回字段值
    HGET key field
    #6、返回多个字段值
    HMGET key field filed
    #7、返回所有的键值对
    HGETALL key
    #8、返回所有字段名
    HKEYS key
    #9、返回所有值
    HVALS key
    #10、删除指定字段
    HDEL key field
    #11、在字段对应值上进行整数增量运算
    HINCRBY key filed increment
    #12、在字段对应值上进行浮点数增量运算
    HINCRBYFLOAT key field increment

集合数据类型(set)

  • 特点
    1、无序、去重
    2、元素是字符串类型
    3、最多包含2^32-1个元素
  • 基本命令
    #1、增加一个或者多个元素,自动去重
    SADD key member1 member2
    #2、查看集合中所有元素
    SMEMBERS key
    #3、删除一个或者多个元素,元素不存在自动忽略
    SREM key member1 member2
    #4、元素是否存在
    SISMEMBER key member
    #5、随机返回集合中指定个数的元素,默认为1个
    SRANDMEMBER key [count]
    #6、弹出成员
    SPOP key [count]
    #7、返回集合中元素的个数,不会遍历整个集合,只是存储在键当中了
    SCARD key
    #8、把元素从源集合移动到目标集合
    SMOVE source destination member
    #9、差集(number1 1 2 3 number2 1 2 4 结果为3)
    SDIFF key1 key2
    #10、差集保存到另一个集合中
    SDIFFSTORE destination key1 key2
    #11、交集
    SINTER key1 key2
    SINTERSTORE destination key1 key2
    #12、并集
    SUNION key1 key2
    SUNIONSTORE destination key1 key2

有序集合(sortedset)

  • 特点
    1、有序、去重
    2、元素是字符串类型
    3、每个元素都关联着一个浮点数分值(score),并按照分值从小到大的顺序排列集合中的元素(分值可以相同)
    4、最多包含2^32-1元素
  • 有序集合常用命令
    #在有序集合中添加一个成员
    zadd key score member
    #查看指定区间元素(升序)
    zrange key start stop [withscores]
    #查看指定区间元素(降序)
    ZREVRANGE key start stop [withscores]
    #查看指定元素的分值
    ZSCORE key member
    #返回指定区间元素
    #offset : 跳过多少个元素
    #count : 返回几个
    #小括号 : 开区间 zrangebyscore fruits (2.0 8.0
    zrangebyscore key min max [withscores] [limit offset count]
    #每页显示10个成员,显示第5页的成员信息:
    #limit 40 10
    #MySQL: 每页显示10条记录,显示第5页的记录
    #limit 40,10
    #limit 2,3 显示: 第3 4 5条记录
    #删除成员
    zrem key member
    #增加或者减少分值
    zincrby key increment member
    #返回元素排名
    zrank key member
    #返回元素逆序排名
    zrevrank key member
    #删除指定区间内的元素
    zremrangebyscore key min max
    #返回集合中元素个数
    zcard key
    #返回指定范围中元素的个数
    zcount key min max
    zcount salary 6000 8000
    zcount salary (6000 8000# 6000<salary<=8000
    zcount salary (6000 (8000#6000<salary<8000
    #并集
    #zunionstore destination numkeys key [weights 权重值] [AGGREGATE SUM|MIN|MAX]
    #zunionstore salary3 2 salary salary2 weights 1 0.5 AGGREGATE MAX
    #2代表集合数量,weights之后 权重1给salary,权重0.5给salary2集合,算完权重之后执行聚合AGGREGATE
    #交集:和并集类似,只取相同的元素
    ZINTERSTORE destination numkeys key1 key2 WEIGHTS weight AGGREGATE SUM(默认)|MIN|MAX

猜你喜欢

转载自blog.csdn.net/qq_43435274/article/details/103228877