当前位置: 首页 > news >正文

惟博df1042可以看多远湖南优化推广

惟博df1042可以看多远,湖南优化推广,十堰秦楚网论坛十堰城事,静态网站设计怎么做Redis中用于操作键的命令基本上可以分为两种类型。 其中一种命令可以对任何类型的键执行,比如说DEL命令、EXPIRE命令 、RENAME命令、TYPE命令、OBJECT命令等。 举个例子,以下代码就展示了使用DEL命令来删除三种不同类型的键: # 字符串键 redis> SE…

Redis中用于操作键的命令基本上可以分为两种类型。

其中一种命令可以对任何类型的键执行,比如说DEL命令、EXPIRE命令 、RENAME命令、TYPE命令、OBJECT命令等。

举个例子,以下代码就展示了使用DEL命令来删除三种不同类型的键:

#
字符串键
redis> SET msg "he1lo"
OK
#
列表键
redis> RPUSH numbers 1 2 3
(integer) 3
#
集合键
redis> SADD fruits apple banana cherry
(integer) 3
redis> DEL msg 
(integer) 1
redis> DEL numbers
(integer) 1
redis> DEL fruits
(integer) 1

而另一种命令只能对特定类型的键执行,比如说:

SET、GET、APPEND、STRLEN等命令只能对字符串键执行;

HDEL、HSET、HGET、HLEN等命令只能对哈希键执行;

RPUSH、LPOP、LINSERT、LLEN等命令只能对列表键执行;

SADD、SPOP、SINTER、SCARD等命令只能对集合键执行;

ZADD、ZCARD、ZRANK、ZSCORE等命令只能对有序集合键执行;

举个例子,我们可以用SET命令创建一个字符串键,然后用GET命令和APPEND命令操作这个键,但如果我们试图对这个字符串键执行只有列表键才能执行的LLEN命令,那么Redis将向我们返回一个类型错误:

redis> SET msg "hello world"
OK
redis> GET msg
"hello world" 
redis> APPEND msg
”again! "
(integer) 18
redis> GET msg
"hello world again!"
redis> LLEN msg
(error) WRONGTYPE Operation against a key holding the wrong kind of value

类型检查的实现

从上面发生类型错误的代码示例可以看出,为了确保只有指定类型的键可以执行某些特定的命令,在执行一个类型特定的命令之前,Redis会先检查输入键的类型是否正确,然后再决定是否执行给定的命令。

类型特定命令所进行的类型检查是通过redisObject结构的type属性来实现的:

在执行一个类型特定命令之前,服务器会先检查输入数据库键的值对象是否为执行命令所需的类型,如果是的话,服务器就对键执行指定的命令;

否则,服务器将拒绝执行命令,并向客户端返回一个类型错误。

举个例子,对于LLEN命令来说:

在执行LLEN命令之前,服务器会先检查输入数据库键的值对象是否为列表类型,也即是,检查值对象redisObject结构type属性的值是否为REDIS_LIST,如果是的话,服务器就对键执行LLEN命令;

否则的话,服务器就拒绝执行命令并向客户端返回一个类型错误;下图展示了这一类型检查过程。

其他类型特定命令的类型检查过程也和这里展示的LLEN命令的类型检查过程类似。

多态命令的实现

Redis除了会根据值对象的类型来判断键是否能够执行指定命令之外,还会根据值对象的编码方式,选择正确的命令实现代码来执行命令。

举个例子,在前面介绍列表对象的编码时我们说过,列表对象有ziplist和linkedlist两种编码可用,其中前者使用压缩列表API来实现列表命令,而后者则使用双端链表API来实现列表命令。

现在,考虑这样一个情况,如果我们对一个键执行LLEN命令,那么服务器除了要确保执行命令的是列表键之外,还需要根据键的值对象所使用的编码来选择正确的LLEN命令实现:

如果列表对象的编码为ziplist,那么说明列表对象的实现为压缩列表,程序将使用ziplistLen函数来返回列表的长度;

如果列表对象的编码为linkedlist,那么说明列表对象的实现为双端链表,程序将使用listLength函数来返回双端链表的长度;

借用面向对象方面的术语来说,我们可以认为LLEN命令是多态( polymorphism)的,只要执行LLEN命令的是列表键,那么无论值对象使用的是ziplist编码还是linkedlist编码,命令都可以正常执行。

下图展示了LLEN命令从类型检查到根据编码选择实现函数的整个执行过程,其他类型特定命令的执行过程也是类似的。

 

实际上,我们可以将DEL、EXPIRE、TYPE等命令也称为多态命令,因为无论输入的键是什么类型,这些命令都可以正确地执行。

DEL、EXPIRE等命令和LLEN等命令的区别在于,前者是基于类型的多态——一个命令可以同时用于处理多种不同类型的键,而后者是基于编码的多态——一个命令可以同时用于处理多种不同编码。

http://www.dinnco.com/news/63907.html

相关文章:

  • wordpress 播放廊坊seo管理
  • 如何做网站免费教程域名注册人查询
  • 拼多多刷销量网站开发网站流量分析工具
  • 威海做网站多少钱atp最新排名
  • wordpress 2019主题谷歌字体百度seo优化推广公司
  • 手机网站技术建立网站的软件
  • 网站推广积分十堰seo优化方法
  • 顶呱呱代理建设网站广州品牌营销服务
  • jsp动态网站开发心得深圳市前十的互联网推广公司
  • iis7配置asp.net网站昆山网站制作公司
  • 二环建设部网站定制网站和模板建站
  • 用网站空间可以做有后台的网站吗东莞网站建设优化诊断
  • 网站开发所以浏览器兼容模式佛山关键词排名工具
  • 用php做网站用什么框架免费的网络推广渠道
  • 电商设计详情页seo培训教程视频
  • 免费视频素材网站免费直链平台
  • 海外建站流程电商平台推广方案
  • 南京建站服务百度app官网下载安装
  • 的网站建设公司那个好外贸快车
  • 做网站怎么回本深圳网站设计
  • 有免费的微网站是什么9 1短视频安装
  • 织梦后台怎么建设网站什么是搜索引擎营销
  • axure做的网站可以用吗广州seo排名优化服务
  • 新疆免费网站建设如何开一个自己的网站
  • 三一重工的网站是哪家做的aso优化方法
  • 做兼职的网站打字员厦门网站流量优化价格
  • 网站开发所涉及的技术网页代码大全
  • 无锡网站建设推荐智勇产品软文模板
  • 一个空间怎么做多个网站中央广播电视总台
  • 做外贸的有哪些网站有哪些东莞网络营销信息推荐