Redis 多数据中心双向同步 祝辰
replicas, and where it is always mathematically possible to resolve inconsistencies which might result. 并发冲突 举个栗子: LWW(Last Writer Wins)-Register: 适用于 K/V 类型的存储 解决数据冲突的方式是通过使用 unix timestamp 或类似自然时间的计数 None 并发冲突的场景 Data Type: Strings Use Case: Concurrent SETs Conflict Resolution: Last Write Wins (LWW) Redis String 正常同步的场景 Data Type: Maps Use Case: Common HSET Conflict Resolution: None 并发冲突的场景 - Concurrent HSET Conflict Resolution: ADD WINS Redis Map 并发冲突的场景 - 2 Data Type: Maps Use Case: Concurrent HSET Conflict Resolution: LWW – Last Write Wins 并发冲突的场景 - 3 Data Type: Maps Use Case: Concurrent HSET0 码力 | 45 页 | 1.74 MB | 1 年前3Get started with Deno
执行 JavaScript 代码。 ©hijiangtao Deno / 采用 Rust 构建 Rust 是由 Mozilla 主导开发的通用、编译型编程语言。设计准则为 “安全、并发、实用”,支持函数 式、并发式、过程式以及面向对象的编程风格。Deno 使用 Rust 语言来封装 V8 引擎,通过 libdeno 绑定,我们就可以在 JavaScript 中调用隔离的功能。 ©hijiangtao ©hijiangtao Deno 的异步运行时 / Tokio Tokio 是 Rust 编程语言的异步运行时,提供异步事件驱动平台,构建快速,可靠和轻量级网络应 用。利用 Rust 的所有权和并发模型确保线程安全。Tokio 构建于 Rust 之上,提供极快的性能,使其 成为高性能服务器应用程序的理想选择。在 Deno 中 Tokio 用于并行执行所有的异步 IO 任务。 ©hijiangtao0 码力 | 43 页 | 1.51 MB | 1 年前3Python 标准库参考指南 3.7.13
ctypes --- Python 的外部函数库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678 17 并发执行 709 17.1 threading --- 基于线程的并行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . write_history_file, histfile) 此代码实际上会在 Python 运行于 交互模式时自动运行 (参见Readline(类库)配置)。 以下示例实现了同样的目标,但是通过只添加新历史的方式来支持并发的交互会话。 import atexit import os import readline histfile = os.path.join(os.path.expanduser("~"), ".python_history") 格式的优化。有关第 4 版协议带来改进的信息,请参阅 PEP 3154。 注解: 序列化是一种比持久化更底层的概念,虽然pickle 读取和写入的是文件对象,但它不处理持久对象 的命名问题,也不处理对持久对象的并发访问(甚至更复杂)的问题。pickle 模块可以将复杂对象转换为 字节流,也可以将字节流转换为具有相同内部结构的对象。处理这些字节流最常见的做法是将它们写入文 件,但它们也可以通过网络发送或存储在数据库中。shelve0 码力 | 1961 页 | 9.14 MB | 9 月前3Python 标准库参考指南 3.8.20
ctypes --- Python 的外部函数库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722 17 并发执行 755 17.1 threading --- 基于线程的并行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . readline --- GNU readline 接口 145 The Python Library Reference, 发布 3.8.20 以下示例实现了同样的目标,但是通过只添加新历史的方式来支持并发的交互会话。 import atexit import os import readline histfile = os.path.join(os.path.expanduser("~"), ".python_history") PEP 574 了解第 5 版协议所带来的改进的详情。 注解: 序列化是一种比持久化更底层的概念,虽然pickle 读取和写入的是文件对象,但它不处理持久对象 的命名问题,也不处理对持久对象的并发访问(甚至更复杂)的问题。pickle 模块可以将复杂对象转换为 字节流,也可以将字节流转换为具有相同内部结构的对象。处理这些字节流最常见的做法是将它们写入文 件,但它们也可以通过网络发送或存储在数据库中。shelve0 码力 | 2052 页 | 9.74 MB | 9 月前3Python 标准库参考指南 3.13
15.2 ctypes 参考手册 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841 17 并发执行 855 17.1 threading --- 基于线程的并行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . write_history_file, histfile) 此代码实际上会在 Python 运行于 交互模式时自动运行 (参见Readline 配置)。 以下示例实现了同样的目标,但是通过只添加新历史的方式来支持并发的交互会话。 import atexit import os import readline histfile = os.path.join(os.path.expanduser("~"), ".python_history") 用于兼容的替代性随机数发生器,具有长周期和相对简单的 更新操作。 � 备注 全局随机数发生器和Random 实例是线程安全的。不过,在自由线程构建版中,对全局发生器或同一 个Random 实例的并发调用可能导致竞争和糟糕的性能。请考虑改用每线程单独的Random 实例。 9.6.1 簿记功能 random.seed(a=None, version=2) 初始化随机数生成器。 如果 a 被省略或为0 码力 | 2246 页 | 11.74 MB | 9 月前3Python 标准库参考指南 3.13
15.2 ctypes 参考手册 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837 17 并发执行 851 17.1 threading --- 基于线程的并行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . write_history_file, histfile) 此代码实际上会在 Python 运行于 交互模式时自动运行 (参见Readline 配置)。 以下示例实现了同样的目标,但是通过只添加新历史的方式来支持并发的交互会话。 import atexit import os import readline histfile = os.path.join(os.path.expanduser("~"), ".python_history") 用于兼容的替代性随机数发生器,具有长周期和相对简单的 更新操作。 � 备注 全局随机数发生器和Random 实例是线程安全的。不过,在自由线程构建版中,对全局发生器或同一 个Random 实例的并发调用可能导致竞争和糟糕的性能。请考虑改用每线程单独的Random 实例。 9.6.1 簿记功能 random.seed(a=None, version=2) 初始化随机数生成器。 如果 a 被省略或为0 码力 | 2242 页 | 11.73 MB | 9 月前3Python 标准库参考指南 3.10.15
ctypes 参考手册 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 785 17 并发执行 799 17.1 threading --- 基于线程的并行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reference, 发布 3.10.15 此代码实际上会在 Python 运行于 交互模式时自动运行 (参见Readline 配置)。 以下示例实现了同样的目标,但是通过只添加新历史的方式来支持并发的交互会话。 import atexit import os import readline histfile = os.path.join(os.path.expanduser("~"), ".python_history") PEP 574 了解第 5 版协议所带来的改进的详情。 注解: 序列化是一种比持久化更底层的概念,虽然pickle 读取和写入的是文件对象,但它不处理持久对象 的命名问题,也不处理对持久对象的并发访问(甚至更复杂)的问题。pickle 模块可以将复杂对象转换为 字节流,也可以将字节流转换为具有相同内部结构的对象。处理这些字节流最常见的做法是将它们写入文 件,但它们也可以通过网络发送或存储在数据库中。shelve0 码力 | 2207 页 | 10.45 MB | 9 月前3Python 标准库参考指南 3.11.10
ctypes 参考手册 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 847 17 并发执行 863 17.1 threading --- 基于线程的并行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reference, 发行版本 3.11.10 此代码实际上会在 Python 运行于 交互模式时自动运行 (参见Readline 配置)。 以下示例实现了同样的目标,但是通过只添加新历史的方式来支持并发的交互会话。 import atexit import os import readline histfile = os.path.join(os.path.expanduser("~"), ".python_history") two new recursive calls, the other 10 are cached 479001600 该缓存是线程安全的因此被包装的函数可在多线程中使用。这意味着下层的数据结构将在并发更新期 间保持一致性。 如果另一个线程在初始调用完成并被缓存之前执行了额外的调用则被包装的函数可能会被多次调用。 在 3.9 版本加入. @functools.cached_property(func)0 码力 | 2399 页 | 11.19 MB | 9 月前3Python 标准库参考指南 3.7.13
ctypes --- Python 的外部函数库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639 17 并发执行 669 17.1 threading --- 基于线程的并行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . write_history_file, histfile) 此代码实际上会在 Python 运行于 交互模式时自动运行 (参见Readline(类库)配置)。 以下示例实现了同样的目标,但是通过只添加新历史的方式来支持并发的交互会话。 import atexit import os import readline histfile = os.path.join(os.path.expanduser("~"), ".python_history") 数据格式的优化。有关第 4 版协议带来改进的信息,请参阅 PEP 3154。 注解: 序列化是一种比持久化更底层的概念,虽然pickle 读取和写入的是文件对象,但它不处理持久 对象的命名问题,也不处理对持久对象的并发访问(甚至更复杂)的问题。pickle 模块可以将复杂对象 转换为字节流,也可以将字节流转换为具有相同内部结构的对象。处理这些字节流最常见的做法是将它 370 Chapter 12. 数据持久化0 码力 | 1846 页 | 9.09 MB | 9 月前3Python 标准库参考指南 3.12
16.2 ctypes 参考手册 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813 17 并发执行 827 17.1 threading --- 基于线程的并行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . write_history_file, histfile) 此代码实际上会在 Python 运行于 交互模式时自动运行 (参见Readline 配置)。 以下示例实现了同样的目标,但是通过只添加新历史的方式来支持并发的交互会话。 import atexit import os import readline histfile = os.path.join(os.path.expanduser("~"), ".python_history") 只查找缓存结果值 120 >>> factorial(12) # 执行两次新的递归调用,另外 10 次已缓存 479001600 该缓存是线程安全的因此被包装的函数可在多线程中使用。这意味着下层的数据结构将在并发更 新期间保持一致性。 如果另一个线程在初始调用完成并被缓存之前执行了额外的调用则被包装的函数可能会被多次调 用。 Added in version 3.9. @functools.cached_property(func)0 码力 | 2253 页 | 11.81 MB | 9 月前3
共 48 条
- 1
- 2
- 3
- 4
- 5