• 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]内的元素个数

  • 相关阅读:
    php简单的server登陆验证
    CentOS更新php(PHP 5.2+ is required问题)
    CentOS 5.5 x86_64下安装oci8与pdo_oci扩展
    httpd.conf详解
    Thinkphp中去除URL里的index.php
    Oracle使用虚拟表dual一次插入多条记录【摘录】
    【问题】apache目录403错误
    mysql中存储引擎MyISAM与InnoDB的一些区别
    从开辟蓝海到保卫蓝海(三)
    答MM问:经济泡沫破了不更好吗?
  • 原文地址:https://www.cnblogs.com/chafanbusi/p/10673391.html
Copyright © 2020-2023  润新知