zoukankan      html  css  js  c++  java
  • Redis 基本数据类型以及相应操作

    〇、常用命令

    select <num> 选择库0~15 默认0号库

    key * 查看当前库所有键(可以接正则表达式)

    exists <key>

    type <key>

    del <key>

    expire <key> <seconds>  为键设置过期时间,单位秒。

    ttl <key> 查看还有多少秒过期 (-1表示永不过期 -2已过期)

    dbsize 查看当前数据库key的数量

    flushdb 清空当前库 (flushall 清空全部库)

    一、String

    String是redis最基本的类型,单个string最多512M。

    get <key>                                  mget <key1> <key2>...  //设置多个

    set <key> <value>                    mset <key1> <value1> <key2> <value2>...  //多个

    append <key> <value>

    strlen <key>                        

    setnx <key> <value>                 mesetnx   <key1> <value1> <key2> <value2>   //全部不存在时才生效

    ------------set if not exist    

    incr/decr <key>   (纯数字字符串)增长/减小 1(不存在先初始化0)

    incrby/decrby <key> <value> 对应键的值 增/减 步长

    getrange <key> <起始位置,从0,包含><结束位置,包含> 取子串  -------负数表示倒数第几个

    setrange <key> <起始位置> <value> 用value覆写key所存储的字符串值,从起始位置开始 

    setex <key> <过期时间(秒)> <value> 设置键值跟过期时间(set后过期时间会刷新)

    getset <key> <value> 以新换旧

    二、list  双向链表。。。值在键在,值光键亡。

    lpush/rpush <key> <value1> <value2>... 从左边/右边插入一个或者多个值

    lpop/rpop <key> 从左/右弹出一个值

    lrange <key> <start> <end> 返回链表中start到end的元素

    rpoplpush <key1> <key2> 从key1列表右弹出一个值插入到key2左处。

    llen <key>  元素个数

    lrem <key> <count> <value> 从链表头删除value值,删除count的绝对值个value后结束 count>0从头开始 <0从尾删除 =0全部删除

    linsert <key> [before|after] <search> <value> 在search 前/后插入value 为查到search插入失败。

    三、Set 无序集合 。。人在塔在。人去楼空

    sadd <key> <value> <value>..

    smembers <key>             取出集合中所有元素

    sismember <key> <value>   判断集合中是否含有value 有返回1 没有返回0

    srem <key> <value1> <value2>...         删除

    spop <key> 返回并删除集合中一个随机元素

    srandmember <key> <n> 随机返回n个集合中元素

    scard <key> 返回集合中元素个数

    sinter <key1> <key2> 交集

    sunion <key1> <key2> 并集

    sdiff <key1> <key2> 差集

    (上面三个)store <res> <key1> <key2> 求两个集合的(交并差)存在res里

    四、Hash

    Redis hash 是一个string类型的field和value的映射表,它的添加、删除操作都是O(1)(平均)。hash特别适用于存储对象,将一个对象存储在hash类型中会占用更少的内存,并且可以方便的存取整个对象。

      配置: hash_max_zipmap_entries 64 #配置字段最多64个

          hash_max_zipmap_value 512 #配置value最大为512字节

    hset <key> <field> <value> 给key集合中的 field键对应的值赋值value

    hsetnx <key> <field> <value>

    hmset <key> <field1> <value1>  <field2> <value2>  批量赋值

    hget <key> <field> 取指定key 指定field中的值

    hmget <key> <field1> <field2> 批量取值

    hexists <key> <field> 查看指定field是否存在

    hlen <key> 返回field数量

    hdel <key> <field> 删除指定field

    hkeys <key>            hvals<key>     hgetall<key>获取某个hash中全部的field/value/field及value

    hincrby <key> <field> <x> 增加x

    五、zset

    redis 中zset与普通set非常相似,是一个没有重复元素的字符串集合。不同之处是zset的每个成员都关联了一个(double)score 用来排序,在value被创建或修改时可以指定其值。底层实现是skip list 和 hashtable的混合体。

    当元素被添加到集合中时,一个元素到score的映射被添加到hash table中,所以给定一个元素获取score的开销是O(1)。另一个score到元素的映射被添加的skip list,并按照score排序,所以就可以有序地获取集合中的元素。添加、删除操作开销都是O(logN)和skip list的开销一致,redis的skip list 实现是双向链表,这样就可以逆序从尾部去元素。sorted set最经常使用方式应该就是作为索引来使用,我们可以把要排序的字段作为score存储,对象的ID当元素存储。

    zadd <key> <score1> <value1>

    zrange <key> <start> <stop> 把排序后的结果返回 (默认score升序)

    z(rev)rank <key> <value> 查询对饮value的排名,(默认升序,rev按降序排列)

    zrem <key> <value>... 删除

    zremrangebyscore <key> min max  删除 score属于 [min,max]

    zremrangebyrank <key>start end 删除 名次属于[start,end]

    zcard  <key> 返回集合中元素的个数

    zcount <key> <min> <max> 返回score在区间[min,max]内的元素个数

  • 相关阅读:
    ECharts之柱状图 饼状图 折线图
    Vue自定义指令(directive)
    HDU 1231 最大连续子序列
    POJ 2533 Longest Ordered Subsequence
    HDU 1163 Eddy's digital Roots
    HDU 2317 Nasty Hacks
    HDU 2571 命运
    HDU 4224 Enumeration?
    HDU 1257 最少拦截系统
    HDU 2740 Root of the Problem
  • 原文地址:https://www.cnblogs.com/chafanbusi/p/10673391.html
Copyright © 2011-2022 走看看