Redis 基础命令与五大基本类型常用命令

key操作

keys *  # 查看所有的key
exists key  # 判断当前key是否存在,存在返回1 不存在返回0
move key 1  # move切换,将选中key切换到其他数据库
clear # 清屏
set key value # 设置key value
get key # 获取key 的value
expire key 10(时间 秒为单位) # 设置key的过期时间,单位是S
ttl key # 查看当前key的剩余时间 过期后会删除 删除后显示为-2
type key # 查看当前key的类型 字符串为string

String(字符串)

  • 基础操作

    set key value # 设置值,存在覆盖
    mset key value [key value]  # 创建多个值
    get key # 获得值,不存在报错
    mget key [key] # 获取多个值 
    keys * # 查看所有的key(key有多种类型)
    exists key # 判断某一个key是否存在 存在为1 不存在为0
    append key value # 往该key中添加字符串,如果key不存在,就创建key 相当于setkey
    strlen key # 获取字符串的长度(该key必须是string类型)
    
  • 增减指定步长

    incr key # 自增1 注意:当该key的值不是数字的时候无法自增
    decr key # 自减1 同上
    incrby key int(数字类型 步长) # 可设置步长,指定增量
    decrby key int # 设置步长,指定减量
    
  • 字符串范围 range

    getrange key start(数字 开始位置) end(数字 结束位置) # 截取字符串[start,end] 是闭区间
    getrange key 0 -1 # 获取全部的字符串 和 get key是一样的
    
  • 替换

    setrange key offset(int 数字 从哪个位置开始) value(替换为什么) # 替换指定位置开始的字符串
    
  • setex(set with expire)设定到期,setnx(set if not exist) 不存在在设置(分布式锁中常常会用)

    setex key seconds(int 数字) value # 设置key的值为value,并且seconds秒后到期也就是被删除
    setnx key value # 如果key不存在,则创建,如果存在则创建失败
    msetnx key value key value... # 原子性操作,要么一起成功,要么一起失败,所有的key必须都不存在才可以创建成功
    
  • 对象

    set user:{id} {name:zhangsan,age:16} # 设置一个user:1对象 值为json字符串来保存一个对象
    # 这里的key是一个巧妙的设计
    
  • getset 先get然后在set

    getset key value # 返回该key的value,如果不存在则返回nil,如果存在值,则获取原来的值,并设置新的值
    

在这里插入图片描述
计数器、统计多单位数量、粉丝数、对象缓存

List(列表)

  • 创建list

    lpush key element(元素) [element]#将一个值或者多个值,插入到列表头部(左) 列表不存在则创建
    rpush key element [element]# 插入到列表尾部(右),不存在则创建
    
  • 删除

    lpop key(list类型) # 移出列表的第一个元素( 左 头部)
    rpop key   # 移出列表的最后一个元素(右 尾部)
    
  • 查询

    lrange key(list类型) key start top # 获取list中的值 0 -1 是取出所有 [start top] 闭区间
    lindex key index(int 数字) # 通过下标获取list中某一个值
    
  • llen返回列表长度

  • 移除指定的值

    lrem key count(int 数字) element # 移出列表中指定个数的指定元素(element),精确匹配,从头部(左边开始移除)
    
  • trim 切片(原list上)

    ltrim key start stop #通过下标对list进行切片,会改变原列表,只有区间内的保留
    
  • rpoplpush

    rpoplpush source(来源) destination(目的地) # 移除列表中的最后一个元素,将他移动到新的列表中的头部(左边),如果目标列表不存在则会创建,
    
  • 更新

    lset key index(int) element  # 将该列表中的index索引,替换为element设置的值,如果不存在列表则会报错,如果不存在该索引也会报错 索引为从0开始
    
  • linsert 将某个具体的value插入到列表中某个元素的前面或者后面

    linsert key befor(前面)|(或者)after(后面) element(就好像value 元素的意思)
    lpush 头部插入 rpush 尾部插入 linsert 具体元素中间插入
    

消息排列 消息队列(Lpush Rpop) 栈 (Lpush Lpop)

Set(集合)

set中的值是不能重复的,集合中的值是乱序的

命令基本上都是s开头的

  • 增加

    sadd key member member(成员) .... # 向key这个set中插入值 如果存在会插入失败
    
  • 查看

    smembers key # 查看这个集合中的所有成员(是指定集合)
    sismerber key member # 查看这个集合中有没有这个值
    
  • 获取集合中的元素个数

    scard key # 查看这个集合中的成员个数
    
  • 移出set集合中指定的元素

    srem key member member.... # 移出集合中的指定元素 移出多个成员的时候 如果移出了一个不存在的成员不报错,应该就是跳过
    
  • 随机

    mrandmember key [count](加上就是随机取出多个不加就是随机取出一个) # 随机取出一个或者多个成员
    spop key [count](同上) # 随机弹出一个或者多个成员 key是集合
    
  • 移动

    smove source(成员的来源) destination(成员的去处) member(成员) # 将一个指定的成员,移动到另一个set集合中
     smove myset myset2 "hello" # 这两个成员必须是同一个库中的
    
  • 交集 并集 差集

    共同关注(交集) 等

    sdiff key   [key].... # 求多个集合的差集(就是去掉相同的 是第一个集合与其他集合的差集)
    sinter key  [key]... # 求多个集合的交集(显示的成员存在于所有查询的集合中)
    sunion key  [key]# 求多个集合的并集(就是全部加起来)
    

在这里插入图片描述

Hash(哈希)

Map集合,key-map! 这个值是一个map集合!本质和String类型没有太大区别,keys一个key-value

hset key field value [field value] # 增加一个具体的field-value field是该value的域
hget key field # 通过该hash中的域field来获取对应的value
hmset key filed value [field value] # 与hset一样 hset不加m也可以添多个
hget key field [filed] # 获取hash中的多个域对应的值value
hgetall key # 查看hash中的所有的数据 显示是以 field-value形式显示的
hdel key field [field] # 删除hash指定的域field对应的值value也就消失了
hexists key field # 判断hash中指定的域是否存在 存在返回1 不存在返回0
hkeys key # 获取hash中的所有域
hvalue key # 获取hash中的所有value
hincrby key field increment(数量) # hash对应域对应值的增量 注意!该值一定要为数字 当incrment为负数的时候表示,减少
hsetnx key field value # 如果不存在可以设置 如果存在则不变动沿用之前的

在这里插入图片描述
hash用来存储变更的数据 user name age 尤其是用户信息之类的,hash更适合对象的存储,String更适合字符串存储

hset user 1 {name:zhangsan,age:16} # 设置一个user id对象 值为json字符串来保存一个对象
比set user:1 {name:zhangsan,age:16}更合适一些

Zset(有序集合)

在set的基础上,增加了一个值,一般都设置为数字,可以用来进行大小排列等

  • 增加

    zadd key score(分数) member [score member] # 往zset中加入成绩与其对应的成员 成绩可以是浮点型和整形 如果添加成员的时候成员存在那么可以更新其成绩
    
  • 查询

    zrange key start stop [WITHSCORES](加上那么查询时会显示对应的成绩) # 返回指定区间内的成员 1表示第一个 2是第二个... -1是最后一个 -2是倒数第二个...
    zcard key # 获取zset中的member个数
    zcount key min max # 获取指定区间内的成员数量
    
  • 排序

    zrangebyscore key min max [WITHSCORES] # 按照zset的成绩进行从小到大的展示 -inf 表示最小值 +inf 表示最大值
    ZRANGEBYSCORE salary -inf 2500 withscores # 展示工资小于2500员工的升序排列 
    zrevrange key start stop [WITHSCORES] # 从大到小进行排列
    
  • 弹出

    zrem key member [ke memebr] # 移出zset中的指定成员 不能通过成绩(score) 来弹出
    

zset排序,同时去掉重复成员 存储班级成绩表,工资表等
普通消息 1 ,重要消息 2,带权重进行判断!
排行榜应用实现,去TOP N测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

跟着上帝去流浪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值