• Redis常用五大数据类型(详解)正在更新


    一,key

    1,查看当前库所有key:

    key *

    在测试之前先键入几个值

    1. set k1 mary
    2. set k2 jack
    3. set k3 frank
    4. keys *

    70260e3cea044357a186ab22823e1cce.png

     2,判断是否包含某个key

    exists key

    d42a3deaa1804f11a2776ef6fa1709bc.png

    3,查看键的类型

    type key

     24cf98bf9b7847c1b32e6bdf3ed558a3.png

     4,删除指定key的数据

    1. del key 删除指定key的数据
    2. unlink key 根据value选择非阻塞删除

    65768107a6e84f4999c4796b82e24aae.png

    539738b77aa0434c8219f19ad6c574ec.png

    效果是一样的,但是del key 是直接删除 unlink key是非阻塞删除,不会直接删除,仅将keys从keyspace元数据中删除,真正的删除会在后续异步操作。

    5,为key设置过期时间

    expire key 10 指定key10秒删除

     46668c7cbbee4678a798c967ef763464.png

     6,查看key还有多少秒过期

    -1表示永不过期,-2表示已经过期

    35a7691d0da042dfa50d778a2732b8a5.png

    7,切换数据库

    redis默认有16个数据库,0-15库,默认选择0号库

     c3722bd58637425ebe5351452adcced2.png

    8,查看当前库有多少key

    因为我们之前的操作删掉了key,现在重新添加几个

    8c998d7f891f44b5b298a29e5f9eca03.png

    查看当前库的key的数量 

     ffa5042669914eeaae850c30aebf1b51.png

     9,清空当前库

    flushdb

    9d6cf5a84fa742be8000ead5ec1bef33.png

    10,通杀所有库

    flushall

    e58286957d784b5888792fb4c91b7c58.png

    二,Redis字符串类型(String)

    1,简介

    String 是Redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。

    String类型是二进制安全的。意味着Redis的string可以包含任何数据。比如jpg图片或者序列化的对象。

    String类型是Redis最基本的数据类型,一个Redis 中字符串value最多可以是512M。

    2,常用命令

    1,添加键值对

    set <key> <value>

     2,获取值

    get key

    3,追加字符 

    append <key> <value>

     4,获取值的长度

    strlen key

    5,只在key不存在的时候设置值

    setnx key

    6,将key中存储的数字值+1,-1

    1. incr <key> +1
    2. decr <key> -1

    仅对数字值有效果,incr,如果为空,新增值为1;decr,如果为空,新增值为-1

     7,将key中存储的数字值+ - 指定步长

    1. incrby key 步长
    2. decrby key 步长

    原子性 

     所谓原子操作是指不会被线程调度机制打断的操作; 

    这种操作一旦开始,就一直运行到结束,中间不会有任何context switch(切换到另一个线程)。

     (1)在单线程中,能够在单条指令中完成的操作都可以认为是"原子操作",因为中断只能发生于指令之间。

    (2)在多线程中,不能被其它进程(线程)打断的操作就叫原子操作。

    Redis 单命令的原子性主要得于Redis的单线程。

    8,mset ,mget,设置,取多个key和value

    1. mset k1 v1 k2 v2 k3 v3
    2. mget k1 k2 k3

    9,msetnx设置不存在的key,若key存在则设置不成功 

    10,getrange start end截取key从start到end结尾的字符串

     11,setrange 起始位置 value

    12,setex key 过期时间  value ,设置key的值的时候设置过期时间

    13,getset k v 以新值换旧值

    3,数据结构

    String 的数据结构为简单动态字符串(Simple Dynamic String,缩写SDS)。是可以修改的字符串,内部结构实现上类似于Java的 ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配.

    如图中所示,内部为当前字符串实际分配的空间capacity一般要高于实际字符串长度len。当字符串长度小于1M时,扩容都是加倍现有的空间,如果超过1M,扩容时一次只会多扩1M的空间。需要注意的是字符串最大长度为512M。

    三,Redis列表(List)

    1,简介

    单键多值

    redis列表是简单的字符串列表,按照插入顺序排序,可以添加一个元素到列表的头部(左边)或者尾部(右边)。

    他的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差。

     2,常用命令

    1,lpush/rpush ....从左边/右边插入一个或多个值。

    左插

    右插

     注意:插入的过程如下图。

    左插:

    a
    ba
    cba
    dcba

    右插:

    a
    a

    b

    abc
    abcd

    2,lpop/rpop 从左边/右边吐出一个值。值在键在,值光键亡

    3,rpoplpush 从k1列表右边吐出一个值,插到k2列表左边

    下面拿左插入举例子:

     4,lrange key start end 按照索引下标得元素(从左到右)

    略,上方有展示

    注意:lrange key 0 -1可以取到所有值

    5,lindex key index按照索引下标获取元素(从左到右)

    6,llen key 获取列表长度

    7,linsert key before value newvalue 在value的后边插入newvalue插入值

    8,lrem key n value 从左边删除n个value(从左到右)

    9,lset key index value 将列表key下标为index的值换成value

    3,数据结构

    List的底层数据结构是快速链表quickList

    首先在列表元素较少的情况下会使用一块连续的内存存储,这个结构是ziplist,也即是压缩列表。他将所有的元素紧挨着一起存储,分配的是一块连续的内存。

    当数据量比较多的时候才会改成quickList。

    因为普通的链表需要的附加指针空间太大,会比较浪费空间,比如这个列表里存的只是int类型的数据,结构上还需要两个额外的指针prev和next。

    Redis将链表和zipList结合起来组成了quickList。也就是将多个zipList使用双向指针串起来使用。这样既满足了快速插入删除性能,又不会出现太大的空间冗余。

    四,Redis集合(Set)

    1,简介

    Redis set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动重拍的,当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择

    正在更新.......

  • 相关阅读:
    视频播放器(二):视频解码
    Termius 8 for Mac(多协议服务器连接软件)
    uni-app----图片点击放大功能&&点击文本进行复制功能【安卓app端】
    PyQt5布局
    [NSSCTF 2nd]Math
    Python基础小知识问答系列-匿名函数
    golang数据结构与算法——十大排序算法
    MMDetection3D代码中的常见函数简单介绍(build_xxx、multi_apply)
    AgentVerse:清华等高校联手发布AI多智能体协作模拟框架
    EasyCVR服务private.pem文件被清空,导致无法正常启动该如何处理?
  • 原文地址:https://blog.csdn.net/Yajyaj123/article/details/126918559