一、Redis 基础:

  1、通用命令:

    keys [pattern]:

      keys *  #遍历所有key;keys he*  #以'he'开头的key;

      keys he[a-e]* #以‘he’开头第三个字母是a-e之间;

      keys ph?  #'?'代码一位,以ph开头且字母是三位的key  

    dbsize:计算key的总数

    exists key :检查key是否存在(存在返回1,不存在返回0)

    del key [key...]:删除key(返回执行成功的条数)

    expire key seconds:设置key在seconds秒后过期

    ttl key:查看key剩余的过期时间

    persist key:去掉key的过期时间

    type key :返回key的类型

  2、数据结构:

ioredis中文文档 redis api 中文文档_返回结果

二、Redis API的使用:

  1、String:

    set key value     设置键值对 

    setnx key value    key不存在才设置

    set key value xx   key存在才设置

    get key         通过key获取value

    mget        批量获取,时间复杂度 o(n)

    mset        批量设置,时间复杂度o(n)

    getset key value   设置新值并返回旧值

    append key value   在原有value上追加值

    strlen key        字符长度 

    keys *         获取所有的key  (支持通配符 :* ? [])

    del key [kel...]    删除键值对

    incr key        对于整数value增加1

    incrby key num    对于整数value增加num

    decr key       对于整数value减少1

    decrby key num   对于整数value减少num

    incrbyfloat key num  对于浮点数value增加num

    getrange key start end   指定显示的位置       

    setrange key offset value  指定位置修改 

  2、Hash:

    hset key field value  将哈希表key中的域field 的值设为value

    hget key field    返回哈希表key中给定域field的值

    hdel key field       删除哈希表key中的fileld的值

    hgetall key      返回哈希表key中,所有的域和值

    hkeys key       返回哈希表key中所有的域

    hmset key field value [field value]  批量设置field-value对到哈希表key中 o(n)

    hmget key field [field]        批量获取key中 field域的值 o(n)

    hexists key field   判断哈希表key中是否有field

    hlen key       获取哈希表key中field的数量 

    hvals key        返回哈希表key对应所有field的value

    hsetnx key field value  设置哈希表key对应field(存在,则失败)的value 

    hincrby key field intCounter    哈希表key对应的field的value增加 intCounter,返回结果

    hincrbyfloat key feild floatCounter  哈希表key对应的field的value增加 floatCounter,返回结果         

  3、List:

    1、lpush key value [value...]    从列表左端插入值(1-N个)

    2、rpush key value [value...]    从列表右端插入值(1-N个)

    3、linsert key before|after value newValue  在列表指定的值前|后插入newValue 

    4、lrem key count value           根据count值,从列表中删除所有value,count大于0从左到右,小于0从右到左,等于0删除所有相等项;例如:lrem key -1 a 从右到左删除 1 个相等的项

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

    6、lrange key start end        获取列表指定索引范围所有item等的项

    7、llen key              返回列表key的长度

    8、lpop key             将列表key最左端的元素弹出

    9、rpop key            将列表key最右端的元素弹出             

    10、lindex key index        获取列表key指定的索引item

    11、lset key index newValue      设置列表key指定索引值为newValue

    12、blpop key timeout        阻塞左弹出,timeout是阻塞超时时间,timeout=0为永远不阻塞             

    13、brpop              阻塞右弹出,timeout是阻塞超时时间,timeout=0为永远不阻塞

  注:根据不同的业务需求有以下建议:

    1、lpush + lpop = stack (以栈的方式存取,后进先出)

    2、lpush + rpop = queue (以队列的方式存取,先进先出)

    3、lpush + ltrim = capped conllection (以固定长度的列表存取)

    4、lpush + brpop = message queue (消息队列) 

4、Set:

    1、sadd key element        向集合key添加element(如果存在添加失败)

    2、srem key element        将集合key中的element移除

    3、scard key             计算集合大小

    4、sismember key it          判断it是否在集合中

    5、srandmember key count      从集合中随机挑count个元素

    6、spop key             从集合中随机弹出一个元素

    7、smembers key            获取集合所有元素 

    8、sdiff key key [key...]          获取差集

    9、sinter key key  [key...]       获取交集

    10、sunion key key [key...]       获取并集

  5、zSet:

1、zadd key score element      添加元素     

    2、zrem key element        删除元素

    3、zscore key element        返回元素的score

    4、zincrby key increScore element  增加或减少元素的score

    5、zcard key            返回元素的总个数

    6、zrank key element        返回元素的排名位置(升序)

    7、zrange key start end withscores  返回指定索引范围的升序元素[score]

    8、zrangebyscore key min max withscores   返回指定score范围的升序元素

    9、zcount key min max        返回有序集合内在指定score范围内的个数

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

    11、zremrangebyscore key min max  删除指定分数内的升序元素

    12、zrevrank            返回元素的排名位置(降序)      

    13、zrevrange            返回指定索引范围的降序元素[score]

    14、zrevrangebyscore          返回指定score范围的降序元素

    15、zinterstore            交集

    16、zuninstore            并集