Redis的数据类型及基础命令

1、简介

Redis是一个开源、内存中的数据结构存储系统,他可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构,内置 复制、LUA脚本、LRU驱动事件、事务和不同级别磁盘持久化,可通哨兵(Sentinel)和自动分区(Cluster)提高可用性。

2、数据类型

Redis本身就是一个Map,其中所有的数据都是采用key:value的形式存储。所有的key都是采用String类型(表名​:id:​idvalue:业务),value的部分的类型就是我们常说的Redis 5中数据类型。

2.1、字符串(String)

字符串是一种最基本的Redis值类型。字符串是二进制安全的,意味着一个Redis字符串能够包含任意类型的数据。

  • 基本命令

    • set key value:添加/修改数据
    • get key:获取数据
    • del key:删除数据
    • mset key1 value1 key2 value2 ······:添加/修改多个数据
    • mget key1 key2······:获取多个数据
    • strlen:获取数据字符串长度
    • append:追加信到原始信息后面(存在原始信息就追加,没有就新建)
  • 拓展操作:

    • 数值增加指定范围的值(可用于生成数据库ID,为数据库表主键提供生成策略)

      • incr key:增加1
      • incrby key increment:增加给定的值
      • incrbyfloat key increment:增加单精度值
    • 数值减少指定范围的值

      • decr key:减少1
      • decrby key increment:减少给定的值
    • 自动到期时间(可用于记录一些时间限制的操作)

      • setex key seconds value/ psetex key millisenconds value
2.2、哈希(Hash)

Hashes是字符串字段和字符串值之间的映射,由field和关联的value组成的map,field和value都是字符串的。

  • 基本命令
    • hset key field value:添加/修改数据
    • hget key field:获取key的field的值
    • hgetall key:获取key下所有的field及值
    • hdel key field1 field2··· :删除数据
    • hmset key field1 value1 field2 value2 :添加/修改多个数据
    • hget key field1 field2:获取key的多个field的值
    • hlen key:获取key下的field数量
    • hexists key field:判断key下的field是否存在
    • hkeys key:获取key下所有field
    • hvals key:获取key下所有value
    • hincrby key field increment:增加指定field的值(整数)
    • hincrbyfloat key field increment:增加指定field的值(单精度)
2.3、列表(List)

Redis列表是有顺序、可重复的字符串列表。是一个双向链表,可以添加一个元素到列表的头部(左边)或者尾部(右边),同时也可从头部(左边)或者尾部(右边)获取数据。

  • 基本命令
    • lpush key value1 value2:从左边添加数据
    • rpush key value1 value2:从右边添加数据
    • lrange key startIndex stopIndex:获取数据(不移除)
    • lindex key index:获取index位置的值(不移除)
    • llen key:获取长度
    • lpop key:左边获取数据并移除
    • rpop key:右边获取数据并移除
    • blpop key timeout:阻塞左边获取数据并移除(指定的时间内未获取到数据则返回nil)
    • brpop key timeout:阻塞右边获取数据并移除(指定的时间内未获取到数据则返回nil)
    • lrem key count value:移除制定数据(count:移除多少个,value:移除的元素)
2.4、集合(Set)

Redis集合是一个无序的、不可重复的字符串合集。你可以以O(1) 的时间复杂度(无论集合中有多少元素时间复杂度都为常量)完成 添加,删除以及测试元素是否存在的操作,以及合并、求交等操作。

  • 基本命令

    • sadd key member1 member2:添加数据
    • smembers key:获取key下全部数据
    • srem key member1 member2:删除数据
    • scard key:获取集合数据总量
    • sismember key member:判断集合中是否包含指定数据
    • srandmember key count:随机获取集合中指定数量的数据
    • spop key:随机获取集合中的某个数据并将该数据移除
  • 拓展命令

    • sinter key1 key2:计算两个集合的交集
    • sunion key1 key2:计算两个集合的并集
    • sdiff key1 key2:计算两个集合的差集(key1的value减去key2的value)
    • sinterstore destination key1 key2:将两个集合的交集存到新集合(destination )中
    • sunionstore destination key1 key2:将两个集合的并集存到新集合(destination )中
    • sdiffstore destination key1 key2:将两个集合的差集存到新集合(destination )中
    • smove source destination member:将指定的数据从原始集合中移动到目标集合中
2.5、有序集合(Sorted set)

有序集合和集合类似,也是一个无序的、不可重复的字符串合集。但是每个字符串元素都关联到一个叫score浮动数值,里面的元素总是通过score进行着排序,所以不同的是,它是可以检索的一系列元素。

  • 基本命令
    • zadd key score1 member1 score2 menber2:添加数据
    • zrange key start stop [withscores]:获取指定范围的数据
    • zrevrange key start stop [withscores]:获取指定范围的数据(反向)
    • zrem key member:删除数据
    • zrank key member:获取数据对应的索引
    • zrevrank key member:获取数据反向排序对应的索引
    • zscore key member:获取某个元素的score值
    • zincrby key increment menber:修改某个元素的score值
    • zrangebyscore key min max [withscores] [limit]:按score范围获取数据
    • zrevrangebyscore key min max [withscores]:按score范围获取数据(反向)
    • zremrangebyrank key start stop:按索引删除
    • zremrangebyscope key min max:按score删除
    • zcard key:获取集合数据总量
    • zcount key min max:按score 的范围获取集合数据总量
    • zinterstore destination numkeys key1 key2:交集(numkeys:集合数,后面需要指定相应数目的集合名)
    • zunionstore destination numkeys key1 key2:并集(numkeys:集合数,后面需要指定相应数目的集合名)
2.6、位数组(Bit arrays)

或者说 simply bitmaps,通过特殊的命令,你可以将 String 值当作一系列 bits 处理:可以设置和清除单独的 bits,数出所有设为 1 的 bits 的数量,找到最前的被设为 1 或 0 的 bit等。

2.7、HyperLogLogs

HyperLogLog 是用来做基数统计的算法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值