Redis:二、Redis常见命令
2. Redis常见命令
2.1 Redis数据结构介绍
Redis是一个key-value的数据库,key一般是String类型,不过value的类型多种多样
Redis为了方便我们学习,将操作不同数据类型的命令也做了分组,在官网( http://www.redis.cn/commands.html )可以查看到不同的命令:
也可以使用help命令查询命令:
思考:
Redis没有类似MySQL中的Table的概念,我们该如何区分不同类型的key呢?
例如,需要存储用户、商品信息到redis,有一个用户id是1,有一个商品id恰好也是1key的结构
Redis的key允许有多个单词形成层级结构,多个单词之间用’:'隔开,格式如下:
项目名:业务名:类型:id
这个格式并非固定,也可以根据自己的需求来删除或添加词条。
例如我们的项目名称叫 shop,有user和order两种不同类型的数据,我们可以这样定义key:
- user相关的key:shop:user:1
- order相关的key:shop:order:1
2.2 Redis的数据结构之字符串
String 是redis最基本的数据结构,你可以理解成与Memcached一模一样的类型,一个key对应一个value。String类型是二进制安全的,意思就是redis的String可以包含任何数据。比如jpg图片或者序列化的对象,String类型是Redis最基本的数据结构,String类型的值最大能存储512MB。
存储String常用命令:
1) 赋值
使用set key value 的语法
例如:
SETNX:添加一个String类型的键值对,前提是这个key不存在,否则不执行
SETEX:添加一个String类型的键值对,并且指定有效期
2) 取值
使用get key方式获取值
例如:
3) 删除
使用del key方式删除
例如:
也可以一次性删除多个key
4) 数值增减
- incr 自增 默认没有定义的key,对应的value默认为0 加1
如果key对应的value不是一个整数,使用incr会报错:
- decr 自减 与自增很相似 减1
5) 扩展命令
- incrby 指定增量值
- decrby 指定减量的值
- append 追加字符串,如果没有定义,直接赋值
- keys *查看redis的所有的key
2.3 Redis的数据结构之哈希
存储的value是一个hash结构,而hash结构就是一个String key和String value组成的map容器。Hash特别适合用于存储对象, Redis中每个hash可以存储232-1键值对(4294967295)。
String结构是将对象序列化为JSON字符串后存储,当需要修改对象某个字段时很不方便:
Hash结构可以将对象中的每个字段独立存储,可以针对单个字段做CRUD:
存储Hash常用的命令:
- 赋值
- 存储单个字段 hset key fieldname fieldValue
如上代码,表示往redis存储了一个user, user的name的属性对应的值为zhangsan
- 存储多个字段hmset key fieldname1 fieldValue1 fieldname2 fieldValue2…
HSETNX:添加一个hash类型的key的field值,前提是这个field不存在,否则不执行
- 取值
获取指定key的指定的属性的值 hget key fieldName
获取指定key的多个属性值 hmget key fieldName1 fieldName2…
获取指定key的所有属性名和属性值 hgetall key
- 删除
- 删除指定key的一个属性或者多个属性 hdel key fieldName1 [fieldName2 …]
- 增加数字
- hincrby 给某个属性值为整数的属性增加 hincrby key fieldname 增量
- 判断key是否存在
- 判断某个key对应的属性是否存在, 1表示存在,0表示不存在 hexists key fieldname
- 获取hash属性的个数
- 获取hash的属性的个数: hlen key
- 获取hash所有属性
- 获取所有属性的属性名 hkeys key
- 获取所有的属性的值 hvals key
2.4 Redis的数据结构之List
Redis列表是简单的字符串列表,插入顺序排序,你可以添加一个元素到列表的头部(左边)或者尾部(右边),一个列表最多可以包含2的32方 – 1个元素。
常用来存储一个有序数据,例如:朋友圈点赞列表,评论列表等
存储List常用的命令
- 两端添加
- 从左边开始添加 lpush key value1 value2 …
- 获取指定范围的集合元素 lrange key 开始下标 结束下标 注意:-1表示最后下标
- 从右端开始添加元素(我们比较习惯这种方式) rpush key value1 value2…
往list集合头部插入元素 lpushx key value
往list集合尾部插入元素 rpushx key value
- 两端弹出
- 从list左侧(头部)弹出集合元素 lpop key 删除头部元素
- 从list 右侧弹出集合元素 rpop key 删除尾部元素
- 查看list集合的元素的个数 llen key
- 从list集合的指定的方向删除指定个数的指定元素 lrem key count value
注意: count 表示删除多少个 如果为正数 表示从左边开始,负数表示从右边开始, 0表示删除所有
从左侧删除2个3:
从list右侧删除2个2
删除所有的1
- 修改指定下标上的值 lset key index value
注意: index 表示下标,从0开始
把下标为2的元素修改为hello
- 在指定位置插入指定的元素: linsert key before/after value1 value2
注意: before 表示在value1之前插入value2
after 表示在value1之后插入value2
在hello元素之前插入 me
在hello之后插入world
- 把某个集合的尾部元素弹出并插入到另外一个集合的头部
rpoplpush key1 key2
比如把l1集合的尾部元素弹出,并插入到l2集合的头部
2.5 Redis的数据结构之Set
Set与list类型不同的是,set集合中不允许出现重复的元素,set集合最大可以存储2的32方-1个元素. Set集合使用的场景, 就是在跟踪一些唯一数据.
Set集合常用的方法:
- 添加set元素 sadd key value1 value2 ….
添加一个set1的集合,该集合包含a,b,c 3个元素
- 查看set集合的元素 smembers key
查看set1集合的元素
- 删除set集合中的元素 srem key value1 value2 …
删除set1集合的a元素
- 判断set集合中某个元素是否存在, 返回1表示存在, 返回0表示不存在 sismember key value
判断set1集合中是否包含b
- 计算多个集合的差集 sdiff key1 key2 …
注意:上述命令表示,统计出元素在key1存在,但是不存在key2的元素
统计在set2存在,但是不存在与set3的元素:
统计在set3存在,但是不存在与set2的元素:
注意: sdiff 集合的位置不一样,得到的结果也不一样.
- 计算多个集合的交集, sinter key1 key2 …
统计set2,set3的交集(即存在与set2,又存在与set3的元素)
- 计算多个集合的并集 sunion key1 key2 …
统计set2和set3集合的并集
- 计算集合的元素的个数: scard key
统计set2集合的元素个数:
- 把多个集合的差集存储到一个新的集合中 sdiffstore 新集合名 集合1 集合2…
把set2,set3的差集保存到n1集合:
- 把多个集合的交集结果存储到新集合 sinterstore 新集合名 集合1 集合2….
把set2,set3集合的交集保存到n2集合中:
- 把多个集合的并集结果存储到新集合 sunionstore 新集合名 集合1 集合2 …
把set2和set3的并集的结果存储到n3集合中:
2.6 Redis的数据结构之sorted-set/ZSet
Sorted-Set与Set的区别在于:Sorted-Set中的成员在集合中的位置是有序的. Sorted-Set集合使用的场景是:大型在线游戏积分排行榜.
- 添加元素,包括评分和值, zadd key score1 value1 score2 value2…
添加集合sort1,该集合的元素是a,b,c.对应的评分为 5,4,6
注意:
sorted-set集合的默认排序是按照评分的升序排序
如果我们继续给集合添加元素,如果集合的元素已经存在,则覆盖,如果元素不存在,那这个元素就添加进去.
- 查找元素: zrange 开始下标 结束下标
注意: -1表示最后一个 默认是评分的升序排序
查找sort1的所有元素:
如果想把元素的评分也打印出来, 则在后面添加withscores
- 删除元素 zrem key value1 value2 ….
删除sort1集合中的b元素
- 查看集合的元素个数 zcard key
查看sort1集合的元素个数:
- 降序打印集合元素
zrevrange key 开始下标 结束位置 [widthscores]
把sort1集合的元素降序输出:
- 根据具体评分范围来删除元素
zremrangebyscore key min max
**注意:** min 表示最小评分, max表示最大评分, 包括最小和最大评分
删除sort1集合评分在8-12之间的所有元素:
- 根据评分范围来查找元素
zrangebyscore key min max [withscores] [limit 开始 个数]
注意:
withscores 表示输出评分
limit 用于分页 序号从0开始
查询sort1集合中评分在 4-10之间的元素:
查询sort1集合中评分在 4-10之间的元素:并且输出评分:
查询sort1集合中评分在4-10之间的元素,并且进行分页
- 给指定的元素加分 zincrby key score value
给sort1集合的c元素加4分
- 查找指定评分范围的元素个数: zcount key min max
查找sort1集合中评分在4-10之间的元素个数:
2.7 redis keys的通用操作
- 显示所有的key keys *
- 查找以指定字符开头 keys 指定字符串*
查找以s开头的
- 查找以指定字符串开头,后面紧跟任意一位字符 keys 指定字符串?
查找以n开头,后面紧跟一位任意字符:
- 删除 指定的key del key1 key2…
删除n1 n2 n3
- 判断key是否存在 1表示存在 0表示不存在 exists key1 key2…
判断n1是否存在,判断set1是否存在:
- 对key重命名: rename oldKey newKey
把set1的名字设置为set4
- 设置key的有效时间 expire key time
注意: 以秒作为单位
设置set4 的有效时间为10s
- 查看key的剩余有效时间 ttl key
注意: -2表示该key不存在
- 显示key的类型 type key
- 删除redis中所有的key flushall
Redis:二、Redis常见命令相关推荐
- Redis(二) -- redis.conf详解(redis6)
1. 重要配置: 1.1 大小写不敏感: # Note on units: when memory size is needed, it is possible to specify # it in ...
- 认识常见中间件-redis(二)-redis缓存雪崩、缓存击穿、缓存穿透
缓存雪崩 缓存雪崩指的是大量的请求无法在 Redis 缓存系统中处理,请求全部打到数据库,导致数据库压力激增,甚至宕机.出现该错误的原因主要有两种: 大量热点数据同时过期,导致大量请求需要查询数据 ...
- redis(二)redis实战 使用redis进行文章的排序
2019独角兽企业重金招聘Python工程师标准>>> http://www.beckbi.cn/?p=172 redis实战使用redis进行文章的排序 转载于:https://m ...
- Redis:redis通用命令;redis常见数据结构;redis客户端;redis的序列化
一.redis命令 1.redis通用命令 Redis 通用命令是一些 Redis 下可以作用在常用数据结构上的常用命令和一些基础的命令 常见的命令有: keys 查看符合模板的所有key,不建议在生 ...
- Redis常见命令操作
一.Win版本redis登录操作步骤 1.打开DOS界面进入Redis安装路径 例如:cd C:\Users\sunway\Documents\Tencent Files\1571711197\Fil ...
- Redis五大数据类型及常见命令
1. Redis字符串(String) String是Redis最基本的value类型,一个key对应一个value. String类型是二进制安全的,所有Redis的String对象可以包含任何数据 ...
- Redis和Git的常见命令
Redis和Git的常见命令 key命令 String类型命令 list类型命令 set 类型命令 hash 类型命令 zset类型命令 Git 常 使 用 的 命 令 Git 分支常见命令 Gith ...
- redis查询所有key命令_三歪推荐:Redis常见的面试题
本文公众号来源:科技缪缪作者:科技缪缪本文已收录至我的GitHub 说说Redis基本数据类型有哪些吧 字符串:redis没有直接使用C语言传统的字符串表示,而是自己实现的叫做简单动态字符串SDS的抽 ...
- 【Redis】--- 不同数据结构命令
[Redis]--- 不同数据结构命令 前言 数据结构 string (字符串) 使用场景 命令 原子计数 list (列表) 使用场景 命令 hash (字典) 使用场景 命令 set (集合) 使 ...
最新文章
- 影像组学视频学习笔记(12)-支持向量机(SVM)参数优化(代码)、Li‘s have a solution and plan.
- 从算法+数据结构到MVC
- C#模拟POST提交表单(二)--HttpWebRequest以及HttpWebResponse
- 微型计算机滑动平均值滤波器方程,微型计算机控制技术期末复习2011.ppt
- Android百度地图定位
- 从 Java 到 Scala(一):面向对象谈起
- REST HTTP中的POST PUT GET
- 逻辑回归算法背后的数学
- 2016第七届蓝桥杯省赛C/C++ B组试题解析整理
- 刚刚!阿里云宣布2021要“做厚中台”!有哪些书值得读?
- 痞子衡嵌入式:单片机AI的春天已来,ARM Cortex-M55发布了
- 原生JS实现一个无缝轮播图插件(支持vue)
- 微信公众号迁移函、公证所需资料与流程
- 我想转行IT,想找一个培训机构,目前看了优就业、千峰、叩丁狼、黑马、达内等机构,请问哪个好一点?
- APISpace 反欺诈(羊毛盾)API
- 网站调用百度地图展示位置,调用百度开放平台api 动态静态调用
- 单片机diy作品鉴赏,初学者进来膜拜
- esp32 Micropython驱动ST7735 1.8寸TFT屏幕 中文显示;时间显示、网络network实时时间获取utptime;urequests、upip等包安装
- 【工业智能】用AI来做工业设备的故障诊断,目前还停留在“鸡尾酒疗法”阶段
- 疫苗预约系统,疫苗预约管理系统,疫苗预约小程序系统设计与实现
热门文章
- oracle的权限授予,Oracle赋予用户sysdba权限
- Python小白的数学建模课-A3. 12个新冠疫情数模竞赛赛题与点评
- 帕斯卡计算机介绍,帕斯卡计算机:第一台受专利保护的计算机
- 【CCF会议期刊推荐】CCF推荐国际学术期刊/会议(计算机科学理论)
- plink, vcftool计算等位基因频率(allele frequency,vcf)
- 电磁场知识回顾——重要方程,定理
- 数学建模竞赛的一些心得体会(全国大学生数学建模首战国一大佬的心得体会)
- Google官方控件ShapeableImageView使用
- 串口打印中文乱码及注释乱码问题
- ERNIE,ERNIE2.0,Transformer-XL,XLNET