• redis 基础


    Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

    1. String(字符串)

    string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。

    string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。也就是说redis 可以存储任何类型的数据,因为任何类型的数据都是可以转化成二进制字符串的,只要这个大小不超过限制。

    string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。

    redis 127.0.0.1:6379> SET runoob "redis 学习笔记"
    OK
    redis 127.0.0.1:6379> GET runoob
    "redis 学习笔记"

    2. Hash(哈希)

    Redis hash 是一个键值(key=>value)对集合。

    Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。

    redis中的hash 类似于python中的dic 字典,类似于java中的hashMap

    Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。

    Redis 中每个 hash 可以存储 2的32次方 - 1 对键值对(40多亿)。

    实例

    DEL runoob 用于删除前面测试用过的 key,不然会报错:(error) WRONGTYPE Operation against a key holding the wrong kind of value

    redis 127.0.0.1:6379> HMSET runoob field1 "Hello" field2 "World"
    "OK"
    redis 127.0.0.1:6379> HGET runoob field1
    "Hello"
    redis 127.0.0.1:6379> HGET runoob field2
    "World"

    3. 列表(List)

    Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

    一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

    4. 集合(Set)

    Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

    Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

    集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

    5. 有序集合(sorted set)

    Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。

    不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

    有序集合的成员是唯一的,但分数(score)却可以重复。

    集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

    6. HyperLogLog

    Redis 在 2.8.9 版本添加了 HyperLogLog 结构。

    Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。

    在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。

    但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素。

    什么是基数?

    比如数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集为 {1, 3, 5 ,7, 8}, 基数(不重复元素)为5。 基数估计就是在误差可接受的范围内,快速计算基数

    7. 发布订阅

    Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。

    Redis 客户端可以订阅任意数量的频道。

    下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:

    img

    当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:

    img


    8. 事务

    Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证:

    • 批量操作在发送 EXEC 命令前被放入队列缓存。

    • 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。

    • 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。

    一个事务从开始到执行会经历以下三个阶段:

    • 开始事务。

    • 命令入队。

    • 执行事务

    单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。

    事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。

    9. 脚本

    Redis 脚本使用 Lua 解释器来执行脚本。 Redis 2.6 版本通过内嵌支持 Lua 环境。执行脚本的常用命令为 EVAL



  • 相关阅读:
    Oracle_高级功能(9) 性能优化
    Oracle_高级功能(8) 事务和锁
    Oracle_高级功能(7) 数据字典视图和动态性能视图
    Oracle_高级功能(6) 分区
    Oracle_高级功能(5) 用户、角色、权限
    Oracle_高级功能(4) 数据库存储结构
    Oracle_高级功能(3) synonym和database link
    Oracle_高级功能(2) 索引
    hdu 1561 The more, The Better 树形dp
    C. Glass Carving 正着做或者倒着做都可以
  • 原文地址:https://www.cnblogs.com/1832921tongjieducn/p/13322518.html
Copyright © 2020-2023  润新知