zoukankan      html  css  js  c++  java
  • Redis读书笔记之API的理解和使用

    一、全局命令

    1.查看所有键

    keys * 

    2.键总数

    dbsize

    3.检查键是否存在

    exists key :存在返回1,不存在返回0

    4.删除键

    del key [key ...]:返回结果为成功删除键的个数,删除一个不存在的键返回0

    5.键过期

    expire key seconds / ttl key

    ttl命令会返回键的剩余过期时间:

    a.>=0的整数:键剩余的过期时间,

    b.-1:键没有设置过期时间

    c.-2:键不存在

    6.键的数据结构类型

    type key

    二、单线程架构

    Redis使用了单线程架构和I/O多路复用模型来实现高性能的内存数据库服务。

    一条命令从客户端到达服务端之后不会被立即执行,所有命令都会进入一个队列中,然后逐个被执行。

    Redis作为单线程还能那么快的原因:

    1.纯内存访问,Redis将所有数据放在内存中,内存的响应时长大约为100纳秒,这是Redis达到每秒万级别访问的重要基础。

    2.非阻塞I/O,Redis使用epoll作为I/O多路复用技术的实现,再加上Redis自身的事件处理模型将epoll中的连接、读写、关闭都转化为事件,不在网络I/O上浪费过多时间。

    3、单线程避免了线程切换和竞态产生的消耗。

    三、字符串

    1、常用命令

    A.设置键

    set key value [ex seconds] [px milliseconds] [nx|xx]

    ex seconds : 为键设置秒级过期时间

    px milliseconds:为键设置毫秒级过期时间

    nx:键必须不存在,才可以设置成功,用于添加

    xx:与nx相反,键必须存在,才可以设置成功,用户更新

    setex key seconds value : 同ex选项

    setnx key value:同nx选项

    B.获取值

    get key 

    C.批量设置值

    mset key value [key value ...]

    D.批量获取值

    mget key [key ...]

    E:计数

    incr key 

    incr命令用于对值做自增操作:

    值不是整数,返回错误;值是整数,返回自增后的结果;键不存在,按照值为0自增,返回结果为1。

    decr key :自减

    incrby key increment:自增指定数字

    decrby key decrement:自减指定数字

    incrbyfloat key increment:自增指定浮点数

    2.不常用命令

    A.追加值

    append key value : 字符串尾部追加值

    B.字符串长度

    strlen key 

    C.设置并返回原值

    getset key value 

    D.设置指定位置的字符

    setrange key offeset value

    E.获取部分字符串

    getrange key start end

    四、哈希

     1、命令

    hset  key field value :设置值

    hget key field :获取值

    hdel key field [field ...] :删除field

    hlen key  :计算field个数

    hmget key field [field...] :批量获取field-value

    hmset key field value [field value...] :批量设置

    hexists key field :判断field是否存在

    hkeys key :获取所有field

    hvals key :获取所有value

    hgetall key :获取所有field-value;如果哈希元素个数比较多,hgetall会存在阻塞Redis的可能,可用hscan

    hincrby | hincrbyfloat  key field increment:自增,increment为增长值

    hstrlen key field :计算value的字符串长度

    五、列表

    rpush key value [value ...] :从右到左插入元素

    lpush key value [value ...] :从左到右插入元素

    linsert key before|after pivot value :从某个元素(pivot)前或后插入元素

    lrange key start end :获取指定范围内的元素列表

    索引下标从左到右:0~N-1;从右到左:-1~-N

    lindex key value :获取指定索引下标的元素

    llen key :获取列表长度

    lpop key :从列表左侧弹出元素

    rpop key :从列表右侧弹出元素

    lrem key count value :删除指定元素

    count > 0 ,从左到右,删除最多count个元素

    count < 0,从右到左,删除最多count绝对值个元素

    count = 0,删除所有

    ltrim key start end :按照索引范围修剪列表

    lset key index newValue :修改指定索引下标的元素

    blpop|brpop key [key ...] timeout :阻塞

    key[key...]:多个列表的键;timeout:阻塞时间(单位:秒)

    1)列表为空:如果timeout=3,客户端要等到3秒后返回;如果timeout=0,客户端一直阻塞下去

    2)列表不为空:客户端会立即返回

    六、集合

    sadd key element [element...] :添加元素

    srem key element [element...] :删除元素

    scard key :计算元素个数

    sismember key element :判断元素是否在集合中存在

    srandmember key [count] :随机从集合中返回指定个数元素,返回的元素在集合中依然存在

    spop key [count]:从集合中随机弹出指定个数元素,弹出的元素在集合中会被删除

    smembers key :获取所有元素

    sinter key [key ...] :求多个集合的交集

    sunion key [key ...] :求多个集合的并集

    sdiff key [key ...] :求多个集合的差集

    sinterstore destination key [key ...] :将交集的结果保存

    sunionstore destination key [key ...] :将并集的结果保存

    sdiffstore destination key [key ...] :将差集的结果保存

    七、有序集合

    zadd key [NX|XX] [CH] [INCR] score member [score member...] :添加成员

      nx:member必须不存在,才可以设置成功;

      xx:member必须存在,才可以设置成功;

      ch:返回此次操作后,有序集合元素和分数发生变化的个数;

      incr:对score做增加,相当于后面介绍的zincrby;

    zcard key :计算成员个数

    zscore key member :计算某个成员的分数

    zrank key member:分数从低到高计算成员的排名

    zrevrank key member:分数从高到低计算成员的排名

    zrem key member [member ...] :删除成员

    zincrby key increment member :增加成员的分数

    zrange key start end [withscores] :返回指定排名范围的成员,从低到高

    zrevrange key start end [withscores]:返回指定排名范围的成员,从高到低

    zrangebyscore key min max [withscores] [limit offset count] :返回指定分数范围的成员,从低到高

    zrevrangebyscore key max min [withscores] [limit offset count] :返回指定分数范围的成员,从高到低

    zcount key min max :返回指定分数范围的成员个数

    zremrangebyrank key start end :删除指定排名内的升序元素

    zremrangebyscore key min max :删除指定分数范围的成员

    zinterstore destination numkeys key [key...] [weights weight [weight ...]] [aggregate sum|min|max]:交集

      destination:交集计算结果保存到这个键,

      numkeys:需要交集计算键的个数,

      key[key ...]:需要做交集计算的键,

      weights weight[weight...]:每个键的权重,在做交集计算时,每个键中的每个member会将自己分数乘以这个权重,每个键的权重默认是1,

      aggregate sum|min|max:计算成员交集后,分值可以按照sum、min、max做汇总,默认值是sum

     zunionstore destination numkeys key [key ...] [weights weight [weight...]] [aggregate sum|min|max]:并集

    八、键管理

    A.单个键管理

    rename key newkey :键重命名

    renamenx key newkey :键重命名,只有在newkey不存在时才覆盖

    randomkey :随机返回一个键

    expire key seconds :键在seconds秒后过期

    expireat key timestamp :键在秒级时间戳timestamp后过期

    ttl key :查询键剩余过期时间,返回秒

    pttl key :查询键剩余过期时间,返回毫秒

    ttl(pttl) key 三种返回结果:

      >=0的整数:键剩余的过期时间

      -1:键没有设置过期时间

      -2:键不存在

    pexpire key milliseconds :键在milliseconds毫秒后过期

    pexpireat key milliseconds-timestamp :键在毫秒级时间戳timestamp后过期

    persist key :清除键的过期时间

    move key db:迁移键到目标数据库

    dump + restore :数据迁移

    migrate:数据迁移命令,相当于将dump、restore、del三个命令组合起来,具有原子性

    B.遍历键

    keys pattern:全量遍历键

    scan cursor [match pattern] [count number] :渐进式遍历键

    C.数据库管理

    select dbIndex:切换数据库

    flushdb/flushall:清除数据库,flushdb只清除当前数据库,flushall清除所有数据库

    记录点滴,是对知识理解的阐述与理解,也是对知识的沉淀与回顾;或肤浅、或错误亦是成长与进步,当自得其乐;如若有幸得各路大神不吝赐教,当欣喜异常、不胜感激!
  • 相关阅读:
    nginx-consul-template
    安装calico
    安装docker
    etcd集群安装
    安装consul-client+registrator
    command not found 的解决&&解释
    安装consul
    RAC环境下SCAN IP可以PING通,1521端口也可以TELNET,但是无法建立数据库连接
    Error starting daemon: error initializing graphdriver: devmapper: Device docker-thinpool is not a thin pool
    nginx+keepalived高可用
  • 原文地址:https://www.cnblogs.com/francis-alice/p/7154768.html
Copyright © 2011-2022 走看看