Redis数据结构

Redis非关系型数据库,可以用作数据库、缓存、消息中间件,Redis他是基于内存的因此没有磁盘io的开销,因此他比我们关系型数据库读取数据快,能大大提升我们的运行效率,因此在我们开发中比较常用;

Redis数据类型一字符串类型:这个很好理解,一个key存储一个字符串,value支持多种数据结构,比如我们常用的有:String、Hash、List、set、zset, 还有一些特殊数据类型比如Bitmaps、HyperLogLog、GEO;

常用类型相关结构:

字符串类型String     【key value】
哈希表类型Hash    【key field value field value】
列表类型 List    【key value value value】
无须集合类型Set        【key value value value】
有序集合类型Zset    【key score key score key

目录

一、常用数据类型

字符串类型

哈希表类型

列表类型

无须集合类型

有序集合类型

二、特殊数据型

  Bitmaps

  HyperLogLog

  GEO 


 

一、常用数据类型

  1. 字符串类型

      添加命令:set k1 1     
      查询命令:get k1
      修改命令:set k1 20
      自增+1:  incr k1 
      指定步数:incrby k1 20
      删除:      del k1
  2. 哈希表类型

       常用命令Hash(hget、hset、hdel、hgetall)
       添加命令:hset h1 name zs age 18
       查询命令:hget h1 name
       修改命令:hset h1 name ls
       查询所有:hgetall h1
       删除某个key:hdel h1 age
      
    127.0.0.1:6379> hset h1 name zs age 18
    (integer) 2
    127.0.0.1:6379> hget h1 name
    "zs"
    127.0.0.1:6379> hset h1 name ls
    (integer) 0
    127.0.0.1:6379> hget h1 name
    "ls"
    127.0.0.1:6379> hgetall h1
    1) "name"
    2) "ls"
    3) "age"
    4) "18"
    127.0.0.1:6379> hdel h1 age
    (integer) 1
    127.0.0.1:6379> hgetall h1
    1) "name"
    2) "ls"
  3. 列表类型

       列表类型一个key对应一个链表(双端链表,有序,value可重复,可以通过下标取出      对应值)
    常用命令List (lpush、rpush、lrange、lpop、rpop)
     
    lpush左侧添加 leftpust

    lpush list 30

    【30】

    rpush右侧添加 rightPush

    rpush list 40

    【30、40】
    lpush list 20

    【20、30、40】

    lrange查询指定元素lrange list 0 -1  # 查询重0开始到最后一个元素
    lrange list 0 2  # 查询重0开始到第二个,从0开始
    lpop左侧获取         lpop list    
    【20】
    rpop右侧获取

    rpop list

    【40】

    blpop:左侧获取、若没有则阻塞(可用于阻塞队列、list可作为栈、队列;)
    brpop:右侧获取、若没有则阻塞
    添加:lpush list 20 30 40 50 60
        【20、30、40、50、60】 
    127.0.0.1:6379> lrange list 0 -1
    1) "60"
    2) "50"
    3) "40"
    4) "30"
    5) "20"
    127.0.0.1:6379> blpop list 0	# 0:阻塞时长,0一直阻塞,6阻塞六秒
    1) "list"
    2) "60"

    lindex:通过索引获取列表中的元素
    lindex list 2
    llen:获取长度
    lrem:移除列表元素    【lrem list 0 10】

  4. 无须集合类型

    Set无序不重复集合类型
    常用命令:sadd、srem、scard、smembers、sismember
    27.0.0.1:6379> sadd s1 20 30 40  30 20 50 60
    (integer) 5
    127.0.0.1:6379> smembers s1
    1) "20"
    2) "30"
    3) "40"
    4) "50"
    5) "60"
    127.0.0.1:6379> srem s1 20
    (integer) 1
    127.0.0.1:6379> smembers s1
    1) "30"
    2) "40"
    3) "50"
    4) "60"
    127.0.0.1:6379> sismember s1 30
    (integer) 1
    127.0.0.1:6379> sismember s1 20
    (integer) 0
    Scard s1
    (integer) 4

    smembers: 查询所有的元素
    srem    :删除某个元素
    sismember: 检查元素是否存在
    Scard:返回数量

    sadd s1 10 20 30 40 50 
    sadd s2 20 30 40 50 60
    sdiff: 差集、比较第一个集合在第二个集合中是否存在不存在则返回
    sdiff s1 s2

    【10】
    sdiff s2 s1
    【60】


    Sdiffstore:并集、将存在于第一个集合、但不存在于其他集合中的元素(数学上的差集运算)存储到dest-key键里面
    Sdiffstore s1 s2
    【20、30、40、50、60】

    sadd s1 10 20 30 40 50 
    sadd s2 20 30 40 50 60
    Sinter:交集、将第一个集合和第二个集合相同的数据
    sinter s1 s2
    【20、30、40、50】
    sinter s2 s1
    【20、30、40、50】

    List、set区别
    set无序且不可重复不能通过下标获取元素
    list有序且可重复
    set多个集合可以实现交集、并集、差集

  5. 有序集合类型

            有序集合类型 Zset
            常用命令:zadd 、 zrange、 zscore

        

127.0.0.1:6379> zadd z1 20 zs 30 ls 10 ww
(integer) 3
127.0.0.1:6379> zrange z1
(error) ERR wrong number of arguments for 'zrange' command
127.0.0.1:6379> zrange z1 0 -1
1) "ww"
2) "zs"
3) "ls"
127.0.0.1:6379> zscore z1 ww
"10"
127.0.0.1:6379>

一般用作排序的列表、比如商品的排行
底层实现:ziplist和skiplist(跳表)

、特殊数据型

  Bitmaps

  HyperLogLog

  GEO 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值