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. [转]NLog学习笔记

    配置文件 NLog所有的配置信息都可以写到一个单独的xml文件中,也可以在程序代码中进行配置. 配置文件位置 启动的时候,NLog会试图查找配置文件完成自动配置,查找的文件依次如下(找到配置信息则结束 ...

  2. 我的大数据之路 - 基于HANA构建实时方案的历程

    产品内部前期有一个共识,依据业务要求的时效性来选择技术平台,即: 实时类业务,时效性小于2小时,则使用HANA构建. 离线类业务,时效性大于2小时,则使用大数据平台构建. 经过五月.六月两月的努力,离 ...

  3. Python 潮流周刊第 34 期(摘要)

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  4. 聊聊Llama2-Chinese中文大模型

    转载请注明出处:https://www.cnblogs.com/zhiyong-ITNote 基本简述 Llama2-Chinese 大模型:由清华.交大以及浙大博士团队领衔开发:基于200B中文语料 ...

  5. CUDA个人入坟笔记

    CUDA是建立在NVIDIA的GPUs上的一个通用并行计算平台和编程模型,基于CUDA编程可以利用GPUs的并行计算引擎来更加高效地解决比较复杂的计算难题.近年来,GPU最成功的一个应用就是深度学习领 ...

  6. flutter中全局与单页面背景图片(动态图片)

    单页面设置背景图片 使用 Container 组件和 decoration 属性: 优点:简单易用,适用于大多数情况下的页面背景设置. 缺点:无法控制背景图片的位置和层级. class MyBook ...

  7. C++标准库中copy算法的使用

    目录 std::copy是C++标准库中的算法接口,主要用于两个容器间的复制,据说其效率要优于自己用for循环逐个复制.之前一直非常混淆其中的用法,这里总结了几个例子如下: #include < ...

  8. .NET周报【10月最后一期 2022-11-01】

    精选要闻 .NET 7 NativeAOT比.NET单文件发布文件小80% https://twitter.com/JamesNK/status/1584919726861737984?s=20&am ...

  9. KubeEdge Sedna v0.6 & Ianvs v0.2 重磅发布:边云协同终身学习全面升级

    本文分享自华为云社区<KubeEdge Sedna v0.6 & Ianvs v0.2 重磅发布:边云协同终身学习全面升级>,作者: 云容器大未来 . 本文探讨了边缘智能应用在开放 ...

  10. 实战解析丨如何对Mysql连接请求的tcpdump内容进行分析

    摘要:tcpdump是通过拦截发送和收到的网络连接中的TCP/IP和其他数据包,通过tcpdump工具帮助我们分析三次握手或者四次挥手的数据包情况,就能很容易的帮助我们分析出网络在哪一个步骤出的问题. ...