search
HomeDatabaseMysql Tutorial Redis实战(3)数据类型一Strings

Redis的作者antirez(SalvatoreSanfilippo)曾经发表了一篇名为Redis宣言(RedisManifesto)的文章,文中列举了Redis的七个原则,以向大家阐明Redis的思..

Redis 的作者 antirez(Salvatore Sanfilippo)曾经发表了一篇名为 Redis 宣言(Redis Manifesto)
的文章,文中列举了 Redis 的七个原则,以向大家阐明 Redis 的思想。


1、Redis 是一个操作数据结构的语言工具,它提供基于 TCP 的协议以操作丰富的数据结构。
在 Redis 中,数据结构这个词的意义不仅表示在某种数据结构上的操作,更包括了结构本身
及这些操作的时间空间复杂度。


2、Redis 定位于一个内存数据库,正是由于内存的快速访问特性,才使得 Redis 能够有如此
高的性能,才使得 Redis 能够轻松处理大量复杂的数据结构,Redis 会尝试其它的存储方面
的选择,但是永远不会改变它是一个内存数据库的角色。


3、Redis 使用基础的 API 操作基础的数据结构,Redis 的 API 与数据结构一样,都是一些最基
础的元素,你几乎可以将任何信息交互使用此 API 格式表示。作者调侃说,如果有其它非人
类的智能生物存在,他们也能理解 Redis 的 API。因为它是如此的基础。


4、Redis 有着诗一般优美的代码,经常有一些不太了解 Redis 有的人会建议 Redis 采用一些
其它人的代码,以实现一些 Redis 未实现的功能,但这对我们来说就像是非要给《红楼梦》
接上后四十回一样。


5、Redis 始终避免复杂化,我们认为设计一个系统的本质,就是与复杂化作战。我们不会为了一个小功能而往源码里添加上千行代码,解决复杂问题的方法就是让复杂问题永远不要提复杂的问题。


6、Redis 支持两个层成的 API,第一个层面包含部分操作 API,但它支持用于分布式环境下
的 Redis。第二个层面的 API 支持更复杂的 multi-key 操作。它们各有所长,但是我们不会推
出两者都支持的 API,但我们希望能够提供实例间数据迁移的命令,并执行 multi-key 操作。

7、我们以优化代码为乐,我们相信编码是一件辛苦的工作,唯一对得起这辛苦的就是去享
受它。如果我们在编码中失去了乐趣,那最好的解决办法就是停下来。我们决不会选择让Redis 不好玩的开发模式。

Redis 的作者 antirez 曾笑称 Redis 为一个数据结构服务器(data structures server)
,这是一个非常准确的表述,Redis 的所有功能就是将数据以其固有的几种结构来保存,并提供
给用户操作这几种结构的接口。本文将介绍 Redis 支持的各种数据类型及其操作接口。

strings 类型及操作


string 是最简单的类型,你可以理解成与 Memcached 是一模一样的类型,一个 key 对应一个
value,其上支持的操作与 Memcached 的操作类似。但它的功能更丰富。
string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据,比如 jpg 图片或者序
列化的对象。从内部实现来看其实 string 可以看作 byte 数组,最大上限是 1G 字节,下面是
string 类型的定义:

struct sdshdr { long len; long free; char buf[]; };

len 是 buf 数组的长度。
free 是数组中剩余可用字节数,由此可以理解为什么 string 类型是二进制安全的了,因为它
本质上就是个 byte 数组,当然可以包含任何数据了
buf 是个 char 数组用于存贮实际的字符串内容,其实 char 和 c#中的 byte 是等价的,都是一
个字节。
另外 string 类型可以被部分命令按 int 处理.比如 incr 等命令,如果只用 string 类型,redis 就
可以被看作加上持久化特性的 memcached。
当然 redis 对 string 类型的操作比 memcached 还是多很多的,具体操作方法如下:

set:

设置 key 对应的值为 string 类型的 value。
例如我们添加一个 name= HongWan 的键值对,可以这样做:

142437807.png

setnx:

设置 key 对应的值为 string 类型的 value。
如果 key 已经存在,返回 0, nx是 not exist 的意思。
例如我们添加一个 name= HongWan_new 的键值对,可以这样做:

142630602.png

setex:

设置 key 对应的值为 string 类型的 value,并指定此键值对应的有效期。
例如我们添加一个 haircolor= red 的键值对,并指定它的有效期是 10 秒,可以这样做:

142852223.png

可见由于最后一次的调用是 10 秒以后了,所以取不到 haicolor 这个键对应的值。


setrange:

设置指定 key 的 value 值的子字符串。
例如我们希望将 HongWan 的 126 邮箱替换为 gmail 邮箱,那么我们可以这样做:

143230475.png

其中的 5 是指从下标为 5(包含 5)的字符开始替换

mset:

一次设置多个 key 的值,成功返回 ok 表示所有的值都设置了,失败返回 0 表示没有任何值被设置。

143447382.png

msetnx:

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
dint是什么数据类型dint是什么数据类型Sep 05, 2022 am 11:05 AM

dint是带符号位的32位整数类型;dint的表示方法及范围是“L#-2147483648~L#+2147483647”,定义为双整数或长整数,字节是电脑里的数据量单位,在计算机中,数据只用0和1这种表现形式。

Python时间序列数据操作的常用方法总结Python时间序列数据操作的常用方法总结Apr 24, 2023 pm 10:22 PM

时间序列数据是一种在一段时间内收集的数据类型,它通常用于金融、经济学和气象学等领域,经常通过分析来了解随着时间的推移的趋势和模式Pandas是Python中一个强大且流行的数据操作库,特别适合处理时间序列数据。它提供了一系列工具和函数可以轻松加载、操作和分析时间序列数据。在本文中,我们介绍时间序列数据的索引和切片、重新采样和滚动窗口计算以及其他有用的常见操作,这些都是使用Pandas操作时间序列数据的关键技术。数据类型Python在Python中,没有专门用于表示日期的内置数据类型。一般情况下都

mysql性别用什么类型mysql性别用什么类型Jun 13, 2023 am 11:33 AM

MySQL性别采用多种数据类型来表示性别字段,例如CHAR、ENUM等,最终采用哪种类型,取决于实际需求以及数据存储的大小和性能。

如何解决 golang 中的 “undefined: strings.TrimRight” 错误?如何解决 golang 中的 “undefined: strings.TrimRight” 错误?Jun 24, 2023 pm 11:45 PM

在golang开发中,我们常常会遇到各种各样的错误。其中一个常见的错误就是“undefined:strings.TrimRight”。该错误通常会在我们使用TrimRight函数的时候出现。在本文中,我们将探讨该错误的原因以及如何解决它。原因在golang中,字符串是一种很基础的数据类型,我们可以对其进行各种操作,比如拼接、切分、比较等。其中

decimal是什么类型decimal是什么类型Mar 18, 2021 pm 04:03 PM

decimal是MySQL中存在的精准数据类型,语法格式“DECIMAL(M,D)”。其中,M是数字的最大数(精度),其范围为“1~65”,默认值是10;D是小数点右侧数字的数目(标度),其范围是“0~30”,但不得超过M。

使用golang中的strings.ToTitle函数将字符串转换为大写使用golang中的strings.ToTitle函数将字符串转换为大写Nov 18, 2023 am 09:08 AM

使用golang中的strings.ToTitle函数将字符串转换为大写,需要具体代码示例在Go语言中,字符串是一个非常重要的数据类型,我们经常需要对字符串进行各种操作。其中,将字符串转换为大写是一种需要频繁进行的操作,可以使用golang中的strings.ToTitle函数来实现。ToTitle函数是strings包中定义的一个方法,它可以将字符串中的所

MySQL数据类型详解:你需要知道的知识点MySQL数据类型详解:你需要知道的知识点Jun 15, 2023 am 08:56 AM

MySQL是世界上最流行的关系型数据库管理系统之一,因其可靠性、高安全性、高扩展性以及相对低的成本而得到了广泛应用。MySQL的数据类型定义了各种数据类型的存储方式,是MySQL的重要组成部分。本文将详解MySQL的数据类型,以及在实际应用中需要注意的一些知识点。一、MySQL的数据类型分类MySQL的数据类型可以分为以下几类:整数类型:包括TINYINT、

使用strings.ToTitle函数将字符串转换为标题格式,即每个单词的首字母大写使用strings.ToTitle函数将字符串转换为标题格式,即每个单词的首字母大写Jul 24, 2023 pm 07:31 PM

字符串转换为标题格式的函数strings.ToTitle在Go语言中是非常有用的。它可以将字符串中的每个单词的首字母都转换为大写字母,从而达到标题风格的效果。下面是一个使用strings.ToTitle函数的示例代码:packagemainimport("fmt""strings")f

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

Repo: How To Revive Teammates
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
1 months agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

mPDF

mPDF

mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment