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. 整一个工具类【根据URL地址获取file文件对象】

    整一个工具类[根据URL地址获取file文件对象] 直接将网络url文件转换为file对象 import java.io.*; import java.net.URL; public class Im ...

  2. 从零玩转Websocket实时通讯服务之前后端分离版本-websocket

    title: 从零玩转Websocket实时通讯服务之前后端分离版本 date: 2021-10-25 00:47:12.945 updated: 2021-12-26 17:43:10.496 ur ...

  3. Windows 7更新失败的解决方法

    你好,1.在开始菜单中点击运行,→输入"services.msc"→找到"windows update"右击选择"停止":2.进入C:\wi ...

  4. C#汉诺塔递归算法实现

    目录: 一.什么是递归 1.先来看一下一个递归的例子 2.递归的基本原理 二.汉诺塔问题 1.汉诺塔的故事 2.回到编程,汉诺塔问题主要就是解决这个问题: 3.怎么解决汉诺塔问题 要解决汉诺塔问题就要 ...

  5. JavaFx之全局异常捕获(二十)

    JavaFx之全局异常捕获(二十) javafx开发时,我们有时候需要捕获未处理的异常.手动抛出的异常,在main方法中添加下面代码: public static void main(String[] ...

  6. Linux 逻辑卷管理

    如果用标准分区在硬盘上创建了文件系统,为已有的文件系统添加额外的空间是一件十分痛苦的事情.只能在已有的硬盘上的可用空间范围内调整分区大小,如果硬盘空间不够的话,就只能换一个大容量的硬盘,然后手动将已有 ...

  7. 【开源项目】轻量元数据管理解决方案——Marquez

    大家好,我是独孤风. 又到了本周的开源项目推荐.最近推荐的元数据管理项目很多,但是很多元数据管理平台的功能复杂难用. 那么有没有轻量一点的元数据管理项目呢? 今天为大家推荐的开源项目,就是一个轻量级的 ...

  8. GetView介绍 以及 GetxController生命周期

    etView 只是对已注册的 Controller 有一个名为 controller 的getter的 const Stateless 的 Widget,如果我们只有单个控制器作为依赖项,那我们就可以 ...

  9. Proxy下的Prepare透传,让GaussDB(for MySQL)更稳固,性能更卓越

    本文分享自华为云社区<Proxy下的Prepare透传,让GaussDB(for MySQL)更稳固,性能更卓越>,作者: GaussDB 数据库 . 1.引言 在很多业务场景下,数据库应 ...

  10. 云图说|华为云CodeArts Build,云端化的编译构建平台

    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 本文分享自华为云社区&l ...