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. spring是否线程安全

    spring 管理的bean默认是单例的,可通过 scope 属性设置scope="singleton" 默认是单例,可修改为scope="prototype" ...

  2. 放弃JavaFx开发学习

    放弃JavaFx开发学习 一开始学学习JavaFx是想用java写个小游戏,后来学者JavaFx越来越深,发现坑也越来越多,不禁感叹:JavaFx果然是要抛弃的UI玩儿,UI开发还是用react na ...

  3. Base64编码:数据传输的安全使者

    Base64编码是一种将二进制数据转换为可传输的文本表示形式的方法,它在全球范围内被广泛应用于网络通信.数据存储和传输等领域.本文将从多个方面介绍Base64编码的原理.应用及其在现实场景中的优势,帮 ...

  4. antd ui的from使用问题

    select 的allowClear失效问题 select的value与allowClear同时使用会导致allowClear失效 解决方法 from包装一层,通过const [form] = For ...

  5. Python压缩JS文件,重点是 slimit

    摘要:Python Web程序员必看系列,学习如何压缩 JS 代码. 本文分享自华为云社区<Python压缩JS文件,PythonWeb程序员必看系列,重点是 slimit>,作者: 梦想 ...

  6. “pip不是内部或外部命令,也不是可运行的程序或批处理文件” 到底有多么神秘

    摘要:pip不是内部或外部命令,也不是可运行的程序或批处理文件到底有多么神秘? 本文分享自华为云社区<揭开「pip不是内部或外部命令,也不是可运行的程序或批处理文件」的神秘面纱>,作者:A ...

  7. 浅谈QUIC协议原理与性能分析及部署方案

    之前写过<http1.0 与 http1.1的区别> 与 <再谈HTTP2性能提升之背后原理-HTTP2历史解剖>,QUIC协议,现在nginx官方也即将支持.所以还是得跟上时 ...

  8. Walrus 入门教程:如何创建模板以沉淀可复用的团队最佳实践

    模板是 Walrus 的核心功能之一,模板创建完成后用户可以重复使用,并在使用过程中逐渐沉淀研发和运维团队的最佳实践,进一步简化服务及资源的部署.用户可以使用 HCL 语言自定义创建模板,也可以一键复 ...

  9. OpenSSL 升级、回滚

    ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with ...

  10. PPT 文字穿插

    软件文字,添加一个形状 先选形状,再选文字 选择拆分 设置对象格式