Redis常见命令

Redis常见命令

  • Redis数据结构

    • Redis是一个key-value的数据库,key一般是String类型,value的类型如下
      • 基本类型
        • String
        • Hash
        • List
        • Set
        • SortedSe
      • 特殊类型
        • GEO
        • BitMap
        • HyperLog

    redis将操作不同数据类型的命令做了分组,在官网可以查到不同的命令(https://redis.io/commands/),也可通过help命令来查询

  • Redis通用命令

    • keys:查看符合模板的所有key,不建议在生产环境设备上使用
    • del:删除一个指定的key
    • exists:判断key是否存在
    • expire:给一个key设置有效期,有效期到期时该key会被自动删除
    • ttl:查看一个key的剩余有效期

    通过help [command]可以查看一个命令的具体用法

String类型

String类型是Redis中最简单的存储类型,底层以字符数组形式存储,最大存储空间不超过512m,根据字符串的格式不同,可以分为

  • string:普通字符串
  • int:整数类型,可以做自增自减
  • float:浮点类型,可以做自增自减

String类型常用命令

  • SET:天剑或者修改已经存在的一个String类型的键值对

  • GET:根据key获取String类型的value

  • MSET:批量添加多个String类型的键值对

  • MGET:根据多个key获取多个String类型的value

  • INCR:让一个整型key自增1

  • INCRBY:让一个整型key自增并指定步长

  • INCRBYFLOAT:让一个浮点类型数字自增并设定步长

  • SETNX:添加一个String类型的键值对,前提是这个key不存在,否则不执行

  • SETEX:添加一个String类型的键值对,并且指定有效期

  • redis没有类似mysql中的table的概念,该怎样区分不同类型的key呢???

    • 例如:需要存储用户、商品信息到redis,且用户id和商品id都是1

      • 通过redis存储时,可以采用多个单词层级结构组成redis中的key。例如 项目名:业务名:类型:id

      • 例如我们的项目叫shop,有用户(user)和商品(product)两种不同类型的数据,则key可以这样定义

        • user相关的key:stop:user:xx
        • product相关的key:stop:product:

        若value是一个java对象,则可将对象进行序列化转化为JSON字符串后存储,即 stop:user:1 {“id”:1,“name”:“Jack”,“age”:21}、stop:product:1 {“id”:1.“name”:“娃哈哈”,“price”:8}

Hash类型

Hash(散列)类型是一个无序字典,类似于Java中的HashMap结构,Hash结构可以将对象中的每个字段独立存储,可以针对单个字段做CRUD:

例如:在String中存储Java对象如下

在Hash中存储Java对象如下

Hash类型常用命令

  • hset:添加或者修改hash类型key的field的值

  • hget:获取一个hash类型key的field的值

  • hmset:批量添加多个hash类型key的field的值

  • hmget:批量获取多个hash类型key的field的值

  • hgetall:获取一个hash类型的key中的所有的field和value

  • hkeys:获取一个hash类型的key中的所有的field

  • hvals:获取一个hash类型的key中的所有的value

  • hincrby:让一个hash类型key的字段值自增并指定步长

  • hsetnx:添加一个hash类型的key的field值,前提是这个field不存在,l否则不执行

List类型

redis中的list类型和java中的LinkedList类似,可以看做是一个双向链表结构,特征也和LinkedList类似,常用来存储有序数据,例如,朋友圈点赞列表,评论列表等。

  • 特点
    • 有序
    • 元素可以重复
    • 插入和删除快
    • 查询较慢

List类型常用命令

  • lpush:向列表左侧插入一个或多个元素

  • lpop:移除并返回列表左侧的第一个元素,没有则返回nil

  • rpush:向列表右侧插入一个或多个元素

  • rpop:移除并返回列表右侧的第一个元素

  • lrange:返回一段角标范围内的所有元素

  • blpop和brpop:与lpop和rpop类似,只不过在没有元素时等待指定时间,而不是直接返回nil

Set类型

redis的set和java中的HashSet类似

  • 特征
    • 无序
    • 元素不可重复
    • 查找快
    • 支持交集、并集、差集等功能

Set类型的常用命令

  • sadd:向set中调价一个或多个元素

  • srem:移除set中指定的元素

  • scard:返回set中元素的个数

  • sismember:判断一个元素是否存在在set中

  • smembers:获取set中的所有元素

  • sinter:求交集

  • sdiff:求差集

  • sunion:求并集

SortedSet类型

sortedSet是一个可排序的set集合,与java种的TreeSet类似,但底层结构差别很大,sortedSet中的每个元素都带有一个score属性,可以基于score属性对元素排序,是通过调表加hash表实现的。经常用来实现排行榜等功能。注意:默认都是升序,如果要降序则在命令的z后面天剑rev即可

  • 特性
    • 可排序
    • 元素不重复
    • 查询速度快

SortedSet类型常用命令

  • zadd:添加一个或多个元素到sorted set中,如果已经存在则更新其score值

  • zrem:删除sorted set中的一个指定元素

  • zscore:获取指定元素的socre值

  • zrank:获取指定元素的排名

  • zcard:获取元素个数

  • zcount:统计score值在给定范围内的所有元素的个数

  • zincrby:让指定元素自增

  • zrange:按照score排序后,获取指定score范围内的元素

  • zrangebyscore:按照score排序后,获取指定score范围内的元素

  • zdiff:求差集

  • zinter:求交集

  • zunion:求并集

本文由mdnice多平台发布

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值