Redis特点(AP模型,优先保证可用,不会管数据丢失):

快的原因:

  1. 基于内存操作,操作不需要跟磁盘交互

  2. k-v结构,类似与hashMap,所以查询速度非常快,接近O(1)。

  3. 底层数据结构是有如:跳表(节省内存,不需要节省IO操作)、SDS

  4. 通信使用lO多路复用,单个线程中通过记录跟踪每一个sock(I/O流) 的状态来 管理多个I/O流

  5. 单线程的原因是因为它执行的速度比线程切换的速度还快。

高可用:

  1. 完善的内存管理机制:过期,淘汰,持久化

  2. 主从,sentinel,cluster集群

Redis常用基础命令

  • set key value 设置值

  • get key 取值

  • flushall 清空实例下所有的数据(删库跑路)

  • flushdb 清空当前数据库

  • keys * 查看所有的key(生产环境慎用,因为是单线程的,而且不知道有多少个key,容易导致线程阻塞掉)

  • expire key 10 对key设置过期时间

  • exists key 查看key是否存在,1:在。2:不在

  • del key 删除

  • type key 查看对外的类型

Redis的数据类型(只讲常见的6种)以及使用场景

String

使用场景:

  • 过期属性:缓存,token

  • incr:计数相关的,如点赞数,评论数,分布式ID,库存。因为没有线程安全问题。

  • string的最大内存值 512M

指令

描述

SET key value

设置键key的值为value。

GET key

获取键key的值。

DEL key

删除键key。

INCR key

将键key存储的数字值增一。

DECR key

将键key存储的数字值减一。

APPEND key value

将value追加到键key的现有值的末尾。

SETNX key value

只有在键key不存在时,将键key的值设置为value。

SETEX key seconds value

将键key的值设置为value,并将键key的过期时间设置为seconds秒。

SETRANGE key offset value

从偏移量offset开始,用value覆盖键key的值。

STRLEN key

返回键key的值的长度。

GETRANGE key start end

获取键key的字符串中,指定区间内的子串。

SETXX key value

只有在键key存在时,才设置键key的值为value。

Hash

使用场景:

  • 缓存对象型的数据

  • 统计型的数据

基本的指令:k k v

指令

描述

HSET key field value

为哈希表key中的字段field设置值value。

HGET key field

返回哈希表key中指定字段field的值。

HDEL key field

删除哈希表key中的一个或多个指定字段,不存在的字段将被忽略。

HGETALL key

返回哈希表key中,所有的字段和值。

HKEYS key

返回哈希表key中所有字段的名字。

HVALS key

返回哈希表key中所有字段的值。

HEXISTS key field

查看哈希表key中,指定的字段field是否存在。

HINCRBY key field increment

为哈希表key中的字段field的值加上增量increment。

HINCRBYFLOAT key field increment

为哈希表key中的字段field的值加上增量increment(浮点数)。

HLEN key

返回哈希表key中字段的数量。

HMGET key field1 [field2 ...]

返回哈希表key中,一个或多个给定字段的值。

HMSET key field1 value1 [field2 value2 ...]

同时将多个field-value (字段-值)对设置到哈希表key中。

HSETNX key field value

只有在字段field不存在时,设置哈希表字段的值。

List

特点&使用场景:

  • 双端队列

  • 如果键不存在,会创建新的链表

  • 所有的有序列表都能做,时间线的列表

  • 也能用来做消息队列,但是没有ack机制,一般会用更完善的消息队列如kafka

指令

描述

LPUSH key value

将一个或多个值插入到列表头部。如果key不存在,创建新列表并执行LPUSH操作。

RPUSH key value

将一个或多个值插入到列表尾部。如果key不存在,创建新列表并执行RPUSH操作。

LPOP key

移除并返回列表的第一个元素。

RPOP key

移除并返回列表的最后一个元素。

LRANGE key start stop

获取列表指定范围内的元素。

LINDEX key index

获取列表中指定索引的元素。

LLEN key

返回列表长度。

LSET key index value

将列表key的索引index处的值设置为value。

LREM key count value

移除列表中与参数value相等的元素。

BLPOP key1 [key2] timeout

从左侧弹出列表的第一个元素,如果列表为空则阻塞,直到等待超时或发现可弹出元素为止(不会阻塞)。

BRPOP key1 [key2] timeout

从右侧弹出列表的第一个元素,如果列表为空则阻塞,直到等待超时或发现可弹出元素为止(不会阻塞)。

RPOPLPUSH source destination

移除列表的最后一个元素,并将该元素添加到另一个列表并返

Set

特点&应用场景

  • 无序的集合(全部整型的时候是有序的)

  • 关注,点赞,抽奖等

指令

描述

SADD key member

向集合添加一个或多个成员。如果成员已存在,则忽略。

SMEMBERS key

返回集合中的所有成员。

SREM key member

移除集合中一个或多个成员。

SISMEMBER key member

检查成员元素是否是集合的成员。

SCARD key

返回集合中元素的数量。

SINTER key1 [key2]

返回所有给定集合的交集。

SUNION key1 [key2]

返回所有给定集合的并集。

SDIFF key1 [key2]

返回第一个集合与其他集合之间的差集。

SINTERSTORE destination key1 [key2]

将交集存储在destination集合中。

SUNIONSTORE destination key1 [key2]

将并集存储在destination集合中。

SDIFFSTORE destination key1 [key2]

将差集存储在destination集合中。

SMOVE source destination member

将成员从source集合移动到destination集合。

SRANDMEMBER key [count]

从集合中随机返回一个或多个元素。

SPOP key [count]

从集合中随机移除并返回一个或多个元素。

sortset

特点&应用场景

  • 有序,不可重复。会有score字段来排序,如果score相同,根据key来简单的指令

  • 排行榜

指令

描述

ZADD key score member

将一个成员及其分数值加入到有序集当中。如果该成员已存在,则更新其分数。

ZSCORE key member

返回有序集key中,成员member的分数值。

ZRANGE key start stop [WITHSCORES]

返回有序集key中,指定区间内的成员。

ZREVRANGE key start stop [WITHSCORES]

返回有序集key中,指定区间内的成员,按分数值逆序排列。

ZRANGEBYSCORE key min max [WITHSCORES]

返回有序集key中,所有分数值介于min和max之间的成员。

ZREVRANGEBYSCORE key max min [WITHSCORES]

返回有序集key中,所有分数值介于max和min之间的成员,按分数值逆序排列。

ZREM key member

移除有序集key中的一个或多个成员。

ZCARD key

获取有序集key的成员数量。

ZCOUNT key min max

返回有序集key中,分数值在min和max之间的成员的数量。

ZINCRBY key increment member

为有序集key的成员member的分数值加上增量increment。

ZRANK key member

返回有序集key中成员member的排名。

ZREVRANK key member

返回有序集key中成员member的排名,按分数值逆序排列。

ZLEXCOUNT key min max

返回有序集key中,所有成员在指定的字典区间内的数量。

ZRANGEBYLEX key min max

返回有序集key中,所有成员在指定的字典区间内。

ZREMRANGEBYRANK key start stop

移除有序集key中,指定排名(rank)区间内的所有成员。

ZREMRANGEBYSCORE key min max

移除有序集key中,所有分数值介于min和max之间的成员。

BitMap

特点&应用场景

  • 位图不是实际的数据类型,而是String类型中定义的一种面向位的操作,所 以这个位图的最大长度是512M。

  • 实时的统计数据

指令

描述

SETBIT key offset value

对键key所存储的字符串值,设置或清除指定偏移量上的位(bit)。

GETBIT key offset

返回键key所存储的字符串值在指定偏移量上的位(bit)的值。

BITCOUNT key [start end]

计算字符串在指定范围内的设置位的数量。

BITOP operation destkey key [key ...]

对一个或多个保存二进制位的字符串 key 进行位元操作,并将结果保存到 destkey 上。

BITPOS key bit [start] [end]

返回位图key中第一个值为bit的位的位置。

BITFIELD key [GET type offset] [SET type offset value] [INCRBY type offset increment]

对键key的字符串进行多个位域操作。

Redis之入门概括与指令的更多相关文章

  1. 超强、超详细Redis数据库入门教程

    这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 [本教程目录] 1.redis是什么2.redis的作者何许人也3.谁在使用red ...

  2. Redis快速入门:安装、配置和操作

    本文是有关Redis的系列技术文章之一.在之前的文章中介绍了<Redis快速入门:初识Redis>,对Redis有了一个初步的了解.今天继续为大家介绍Redis如何安装.配置和操作. 系列 ...

  3. 超强、超详细Redis数据库入门教程(转载)

    这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下   [本教程目录] 1.redis是什么 2.redis的作者何许人也 3.谁在使 ...

  4. Redis从入门到精通:初级篇

    原文链接:http://www.cnblogs.com/xrq730/p/8890896.html,转载请注明出处,谢谢 Redis从入门到精通:初级篇 平时陆陆续续看了不少Redis的文章了,工作中 ...

  5. 超详细Redis数据库入门教程

    [本教程目录] 1.redis是什么2.redis的作者何许人也3.谁在使用redis4.学会安装redis5.学会启动redis6.使用redis客户端7.redis数据结构 – 简介8.redis ...

  6. Redis从入门到精通:初级篇(转)

    原文链接:http://www.cnblogs.com/xrq730/p/8890896.html,转载请注明出处,谢谢 Redis从入门到精通:初级篇 平时陆陆续续看了不少Redis的文章了,工作中 ...

  7. 【转】redis数据库入门教程(全面详细)+面试问题

    [本教程目录] 1.redis是什么2.redis的作者何许人也3.谁在使用redis4.学会安装redis5.学会启动redis6.使用redis客户端7.redis数据结构 – 简介8.redis ...

  8. 一篇文章带你了解NoSql数据库——Redis简单入门

    一篇文章带你了解NoSql数据库--Redis简单入门 Redis是一个基于内存的key-value结构数据库 我们会利用其内存存储速度快,读写性能高的特点去完成企业中的一些热门数据的储存信息 在本篇 ...

  9. Java中Redis简单入门

    Redis是一个开源的,先进的 key-value 存储可用于构建高性能,可扩展的 Web 应用程序的解决方案. Redis官方网网站是:http://www.redis.io/,如下: Redis ...

  10. Redis 快速入门

    Redis 快速入门 谈到Redis,大家应该都不陌生.它是用c语言开发的一个高性能键值数据库,主要用于缓存领域.本章通过Redis的安装,Redis的五大数据类型,Redis的Java客户端,Red ...

随机推荐

  1. poweroff详解

    linux下poweroff命令详解 reboot.halt.poweroff三条命令意思作用一样 阅读这三个命令的man帮助信息后,发现实现的是相同的功能. 作用: 重启或者关闭系统 语法: reb ...

  2. 使用XDT提高开发效率

    使用XDT提高开发效率 XDT介绍 XDT(XML Document Transformation)技术是一种用于对XML文档进行转换的技术.它通常用于在部署或配置过程中,根据不同的环境或条件自动修改 ...

  3. Terraform 的开源替代:OpenTofu 宣布 GA!

    OpenTofu 社区于1月10日宣布 OpenTofu 项目 GA,这是 OpenTofu 的首个稳定版本(https://github.com/opentofu/opentofu/releases ...

  4. vue模板的首次渲染,和重新渲染,有哪些区别?

    搞明白这个,能帮助我们理解开发中出现的很多问题. 一.我们先来回顾一下vue模板的渲染过程: (1)执行render函数,生成虚拟DOM. render函数是根据render.templete.el这 ...

  5. 使用 Python 将数据写入 Excel 工作表

    在数据处理和报告生成等工作中,Excel 表格是一种常见且广泛使用的工具.然而,手动将大量数据输入到 Excel 表格中既费时又容易出错.为了提高效率并减少错误,使用 Python 编程语言来自动化数 ...

  6. Java 在PDF中绘制形状(基于Spire.Cloud.SDK for Java)

    Spire.Cloud.SDK for Java提供了pdfPathApi接口可用于在PDF文档中绘制形状(或图形),如绘制线条形状drawLine().绘制矩形形状drawRectanglef(), ...

  7. 你的JoinHint为什么不生效

    本文分享自华为云社区<你的JoinHint为什么不生效[绽放吧!GaussDB(DWS)云原生数仓]>,作者:你是猴子请来的救兵吗 . 引言 提起数据库的Hint,几乎每个DBA都知道这一 ...

  8. Karmada 结合 coreDNS 插件实现跨集群统一域名访问

    本文分享自华为云社区<Karmada 结合 coreDNS 插件实现跨集群统一域名访问>,作者:云容器大未来 . 在多云与混合云越来越成为企业标配的今天,服务的部署和访问往往不在一个 K8 ...

  9. DWS轻量化更新黑科技:宽表加工优化

    本文分享自华为云社区<GaussDB(DWS)性能调优:宽表加工优化方案>,作者:譡里个檔 . 1. 业务背景 宽表加工性能慢,在Gauss(DWS)中可以使用DWS的轻量化更新的黑科技实 ...

  10. 一文带你搞懂从动态代理实现到Spring AOP

    摘要:本文主要讲了Spring Aop动态代理实现的两种方式. 1. Spring AOP Spring是一个轻型容器,Spring整个系列的最最核心的概念当属IoC.AOP.可见AOP是Spring ...