美高梅棋牌官网当redis保存了大量的键时,如果键

Redis有5种数据结构,它们是键值对中的值,对于键来说有一些通用的命令。

Redis 提供了 5 种数据结构。理解每种数据结构的特点,对于 Redis 的 开发运维 非常重要,同时掌握 Redis 的 单线程命令处理 机制,会使 数据结构命令 的选择事半功倍。

简介

Redis是一个采用C语言编写的开源、基于内存、可选持久化的键值对(key-value)NoSQL数据库。与很多键值对数据库不同的是,Redis中的值可以是由string(字符串)、hash(哈希表)、list(列表)、set(集合)、zset(SortedSet(有序集合))、Bitmaps(位图)、HyperLogLog、GEO(地理位置信息)等多种数据结构和算法组成,因此Redis可以满足很多的应用场景,而且因为Redis会将所有数据都存放在内存中,所以它的读写性能非常惊人。不仅如此,Redis还可以将内存的数据利用快照和日志的形式保存到硬盘上,这样在发生类似断电或者机器故障时,内存中的数据不会"丢失"。

除了上述功能以外,Redis还提供了键过期、Pub/Sub(发布/订阅)、Transaction(事务)、流水线(Pipeline)、Lua脚本等附加功能。

1、查看所有键

美高梅棋牌官网 1

Redis 特性

Redis之所以广受好评,主要有如下8个重要特性。

  1. 速度快:正常情况下,Redis执行命令的速度非常快,官方给出的数字是读写性能可以达到10w/秒,当然这也取决于机器的性能。
  2. 基于键值对的数据结构服务器
  3. 丰富的功能
  4. 简单稳定
  5. 客户端支持多种语言
  6. 持久化
  7. 主从复制
  8. 高可用和分布式
keys *

接下来的几篇文章,将从如下几个方面介绍 Redis 的几种数据结构,命令使用及其应用场景。

全局命令

  1. 查看所有键

keys *

  1. 键总数

dbsize

  1. 检查键是否存在

exists key

如果键存在返回1,不存在返回0

  1. 删除键

del key [key ...]

del是一个通用命令,无论值是什么数据结构,del命令都可以将它删除。

  1. 键过期

expire key seconds

Redis支持对键添加过期时间,当超过过期时间后,会自动删除键。

  1. 键的数据结构类型

type key

如:美高梅棋牌官网 2

预备知识:几个简单的 全局命令数据结构内部编码单线程命令 处理机制分析。

单线程架构

Redis使用了单线程架构和I/O多路复用模型 来实现高性能的内存数据库服务。

Redis客户端与服务器的模型可以简化为图2-3,每次客户端调用都经历了发生命令、执行命令、返回结果 三个过程。

美高梅棋牌官网 3

图2-3.png

其中,第二步是重点要讨论的,因为Redis是单线程来处理命令的,所以一条命令从客户端到达服务器端不会立刻被执行,所有命令都会进入一个队列中,然后逐个被执行,这就是Redis单线程的基本模型。但是像发送命令、返回结果、命令排队肯定不会像描述的这么简单,Redis使用了 I/O多路复用技术来解决I/O的问题。

2、键总数

数据结构特性:5 种 数据结构 的特点、命令使用应用场景

为什么单线程还能这么快

通常来讲,单线程处理能力要比多线程差,那么为什么Redis使用单线程模型会达到每秒万级别的处理能力呢?可以将其归结为三点:
第一,纯内存访问,Redis将所有数据放在内存中,内存的响应时长大约为100纳秒,这是Redis达到每秒万级别访问的基础。
第二,非阻塞I/O,Redis使用epoll作为I/O多路复用技术的实现,再加上Redis自身的事件处理模型将epoll中的连接、读写、关闭等都转换为事件,不在网络上I/O上浪费过多的时间。
第三,单线程避免了线程切换和竞态产生的消耗。

dbsize

数据管理键管理遍历键数据库管理

字符串

字符串是Redis最基础的数据结构。字符串类型的值实际可以是字符串(简单的字符串、复杂的字符串(例如JSON、XML)、数字(整数、浮点数),甚至是二进制(图片、音频、视频),但是最大值不能超过512MB。

如:美高梅棋牌官网 4

1. 预备知识

1.设置值

set key value  [ex seconds]  [px milliseconds]  [nx|xx]

set命令有几个选项:

  • ex seconds:为键设置秒级过期时间
  • px milliseconds:为键设置毫秒级过期时间
  • nx:键必须不存在,才可以设置成功,用户添加
  • xx:与nx相反,键必须存在,才可以设置成功,用户更新

setnx 和 setxx在实际使用中有什么应用场景吗?以setnx 为例,由于Redis的单线程命令处理机制,如果有多个客户端同时执行 setnx key value,根据setnx的特性只有一个客户端能设置成功,setnx可以作为分布式锁的一种实现方案,Redis官方给出了使用setnx实现分布式锁的方法:Distributed locks with Redis:https://redis.io/topics/distlock

Tip:dbsize命令在计算键总数时不会遍历所有键,而是直接获取redis内置的键总数变量,所以dbsize命令的时间复杂度是O。而keys命令会遍历所有键,所以它的时间复杂度是O,当redis保存了大量的键时,线上环境禁止使用。

在介绍 5 种 数据结构 之前,需要先了解 Redis 的一些 全局命令数据结构内部编码单线程命令处理机制

2.获取值

get key

3、检查键是否存在

Redis 的命令有 上百个,理解 Redis 的一些机制,会发现这些命令有很强的 通用性

3.批量设置值

mset key value [ key value ...]

例如:

mset a 1 b 2 c 3 d 4
exists key

Redis 不是万金油,有些 美高梅棋牌官网,数据结构命令 必须在 特定场景 下使用,一旦 使用不当 可能对 Redis 本身 或者 应用本身 造成致命伤害。

4.批量获取值

mget key [key ...]

例如批量获取键 a、b、c、d的值:

mget a b c d

如果键存在则返回1,不存在则返回0。

2. 全局命令

5.计数

incr key

incr 命令用于对值做自增操作,返回结果分为3种情况:

  • 值不是整数,返回错误
  • 值是整数,返回自增后结果
  • 键不存在,按照值为0自增,返回结果为1.

美高梅棋牌官网 5

Redis 有 5 种 数据结构,它们是 键值对 中的 ,对于 来说有一些通用的命令。

6.追加值

append key value

append 可以向字符串尾部追加值。

4、删除键

2.1. 查看所有键

哈希(hash)

几乎所有的编程语言都提供了哈希(hash)类型,它们的叫法可能是哈希、字典、关联数组。在Redis中,哈希类型是指 键值 本身又是一个 键值对结构,形如value={field1:value1, ... , fieldN:valueN}。

del key [key ...]

keys *

1.设置值

hset key field value

例如,为user1添加一对field-value:

hset user1 name tom

del是一个通用命令,无论值是什么数据结构类型,del命令都可以将其删除。

下面插入了 3 对字符串类型的键值对:

2.获取值

hget key field 
···

例如,获取user1 的name属性对应的值:

hget user1 name

### 3.删除field

hdel key field

### 4.计算field个数

hlen key

### 5.批量设置或获取field-value

···
hmset key field value [field value ...]
hmget key field [field ...]
···

### 6.判断field 是否存在

hexists key field

### 7.获取所有field

hkeys key

### 8.获取所有value

hvals key

### 9. 获取所有的field-value

hgetall key

## 列表(list)
https://redis.io/commands#list

## 集合(set)
https://redis.io/commands#set

## 有序集合(sorted set)
https://redis.io/commands#sorted_set


## 参考资料
http://redisdoc.com/

美高梅棋牌官网 6

127.0.0.1:6379> set hello world OK 127.0.0.1:6379> set java jedis OK 127.0.0.1:6379> set python redis-py OK 复制代码

del的返回结果为成功删除的个数,假设删除一个不存在的键就会返回0。

命令会将所有的键输出:

同时,del命令可以支付删除多个键:

127.0.0.1:6379> keys * 1) "python" 2) "java" 3) "hello" 复制代码

美高梅棋牌官网 7

2.2. 键总数

5、键过期

dbsize

expire key seconds

下面插入一个 列表类型键值对(值是 多个元素 组成):

redis支持对键添加过期时间,当超过过期时间后,会自动删除键。例如为键hello设置了10秒过期时间:

127.0.0.1:6379> rpush mylist a b c d e f g 7 复制代码

美高梅棋牌官网 8

dbsize 命令会返回当前数据库中 键的总数

ttl命令会返回键的剩余过期时间是,它有3种返回值:

127.0.0.1:6379> dbsize 4 复制代码

  • 大于等于0的整数:键剩余的过期时间。
  • -1:键没有设置过期时间。
  • -2:键不存在。

dbsize 命令在 计算键总数不会遍历 所有键,而是直接获取 Redis 内置的键总数变量,所以 dbsize 命令的 时间复杂度 是 O。而 keys 命令会 遍历 所有键,所以它的 时间复杂度 是 O,当 Redis 保存了 大量键 时,线上环境 禁止 使用。

本文由美高梅游戏网站登录发布于美高梅棋牌游戏,转载请注明出处:美高梅棋牌官网当redis保存了大量的键时,如果键

您可能还会对下面的文章感兴趣: