美文网首页
Redis学习笔记(一)——五大数据类型

Redis学习笔记(一)——五大数据类型

作者: 棉花糖7 | 来源:发表于2021-06-07 10:18 被阅读0次

    1.1 string 类型

    set [key] [name]

    get [key] 获取键值

    append [key] [name] 追加字符串,如果当前key不存在,就相当于set key name

    strlen [key] 返回字符串长度

    dbsize 数据库大小

    keys * 获得键名列表

    flushdb 删除当前数据库

    flushall 删除所有数据库

    EXISTS [key]判断一个键是否存在

    del [key] 删除键

    type key 获得键值的数据类型

    move [key] [dbname] 移动key到数据库dbname

    EXPIRE [key] [sec] 设置多长时间失效,单位是秒

    ttl [key] 查看剩余失效时间

    incr [key] 自增1

    decr [key] 自减1

    INCRBY [key] [step] 指定增量步长

    DECRBY [key] [step] 指定减量步长

    GETRANGE [key] [start] [end] 截取字符串[start,end]范围的字符

    SETRANGE [key] [offset] [value] 把从偏移量1开始的字符替换为value

    setex [key] [time] [value] 设置key 的值在time时间后过期,时间单位是秒

    setnx [key] [value] 如果key不存在就设置,其值是value。若key存在,就不设置,返回0,在分布式锁中常常使用

    mset [key] [value] [k2] [v2] ...设置多个值

    msetnx [k1] [v1] [k2] [v2] 是一个原子操作,也是同时设置多个值,如果有的值已经存在,就失败

    mget [k1] [k2] [k3] 同时获取多个值

    key的一个巧妙的设计

    mset [userKey]:[id]:[key1] [value1][userKey]:[id]:[key2] [value2]

    mget [userKey]:[id]:[key1]  [userKey]:[id]:[key2]

    如:mset user:1:name zhangsan user:1:age 13

    mget user:1:name user:1:age

    getset [key] [name] 先get后set。如果不存在值,就返回nil,如果存在值,就获取原来的值,并设置新的值

    1.2 list类型

    在redis里list可以变成stack,queue,阻塞队列。实际上是一个链表。在两边插入或者改动效率最高!中间元素效率会低一点。

    消息队列(LPUSH RPOP)/ 栈(LPUSH LPOP)

    lpush [key] [value]/[value]... 将一个值或者多个值插入到一个列表的头部(L-left)

    rpush [key] [value]/[value]...将一个值或者多个值插入到一个列表的尾部(R-right)

    lrange [key] [start] [end] 通过区间获取具体的值,其中【0 -1】表示获取整个区间

    lpop [key] [count 可选] 移除头部几个元素,默认一个

    rpop  [key] [count可选] 移除尾部几个元素,默认一个

    lindex [key] [index] 获取某个下标的值,下标从0开始

    llen [key] 返回列表的长度

    lrem [key] [count] [value] 移除列表中count个值为value的数据,精确匹配

    ltrim [key] [start] [stop] 截取链表中从start开始到stop的数据

    rpoplpush [source] [destination] 移除列表最后一个元素,将他移动到新的列表

    lset [key] [index] [value] 如果列表不存在就会报错,如果存在,就是更新list中下标为index的元素值为value

    linsert [key] before/after [pivot] [value] 在列表key中单词pivot的前面或者后面加元素value

    1.3 set 集合类型

    set集合,里面的元素是不能重复的

    sadd [key] [value]/[value]... 往集合中添加元素

    smenmber [key] 查看集合key所有的值

    sismember [key] [value] 查看value是不是集合key中的值

    scard [key] 返回集合总数

    srem [key] [value] 删除集合中某个元素

    srandmember [key] [cnt可选] 从集合中随机抽取出几个元素,默认一个

    spop [key] [cnt可选] 随机删除集合中的几个数,默认一个

    smove [key] [src] [destination] [value] 把原集合src的值value移动到目标集合des

    数字集合类

    差集:sdiff [key1] [key2]..

    交集:sinter [key1] [key2] ..

    并集:sunion [key1] [key2] ..

    1.4 hash哈希类型

    hash(哈希)相当于一个map集合,本质和string没有什么区别,还是一个简单的key-value

    hset [key] [field] [value] set一个具体的key-value

    hget [key] [field] 获取一个set中字段值

    hmset [key] [field] [value] [field] [value]

    set多个值

    hmget [key] [field] [filed] get多个值

    hgetall [key] 获取全部的数据

    hdel [key] [field] 删除hash指定key字段的值!对应的value字段值也消失

    hlen [key] 获取哈希表的字段数量

    hexists [key] [field] 判断哈希表中是否存在字段field

    hkeys [key] 获取哈希表中所有的keys字段名

    hvals [key] 获取哈希表中所有的values值

    hincrby [key] [field] [step] 指定增量

    hsetnx [key] [field] [value] 如果不存在则设置,如果存在就不设置

    hash变更的数据usr age

    name 尤其是用户信息之类的,经常变动的信息。

    hash更适合存储对象,string更适合字符串

    1.5 zset有序集合类型

    Zset可以排序的一个集合

    zadd [key] [score] [value] 如ZADD score 100 liming 32 wangxiao 120 lili 200 wangwu

    zrange [key] [start] [end] [withscores可选] 列出start到end之间的数据

    ZRANGEBYSCORE key min max [WITHSCORES]

    [LIMIT offset count] 返回key的有序集合中的分数在min和max之间的所有元素(包括分数等于max或者min的元素)。元素被认为是从低分到高分排序的。

    如:zrangebyscore score -inf +inf withscores

    zrevrange [key] [start] [end]  [withscores可选] 将数据从start到end,从大到小排序,列出 有序集合

    zrem [key] [value] 删除有序集合中值为value的数据

    zcard [key] 获取有序集合数量

    zcount [key] [min] [max] 获取指定区间的集合

    set可以用于排序,存储班级成绩表,工资排序表

    普通消息1,重要消息2 带权重进行判断

    排行榜应用实现 取TOP N

    相关文章

      网友评论

          本文标题:Redis学习笔记(一)——五大数据类型

          本文链接:https://www.haomeiwen.com/subject/wphheltx.html