前言

  前阶段写Redis客户端作为学习和了解Redis Protocol,基本上把Strintg,List,Hash,Set,SortedSet五种基础类型的命令都写完了,本篇进行总结,也相当于复习一遍了。

STRING 命令

  • SET KEY VALUE
*3\r\n$3\r\nSET\r\n$6\r\nset_20\r\n$4\r\ntest\r\n

+OK
  • GET KEY
*2\r\n$3\r\nGET\r\n$6\r\nget_21\r\n

$9
testValue
  • APPEND KEY VALUE
*3\r\n$6\r\nAPPEND\r\n$9\r\nappend_29\r\n$3\r\n789\r\n

:9
  • MSET KEY VALUE1 VALUE2
*9\r\n$4\r\nMSET\r\n$4\r\nkey1\r\n$6\r\nvalue1\r\n$4\r\nkey2\r\n$6\r\nvalue2\r\n$4\r\nkey3\r\n$6\r\nvalue3\r\n$4\r\nkey4\r\n$6\r\nvalue4\r\n

+OK
  • SETRANGE KEY OFFSET VALUE
*4\r\n$8\r\nSETRANGE\r\n$11\r\nsetrange_30\r\n$1\r\n3\r\n$6\r\n123456\r\n

:9
  • STRLEN KEY
*2\r\n$6\r\nSTRLEN\r\n$9\r\nstrlen_31\r\n

:6
  • MSETNX KEY VALUE1 VALUE2
*9\r\n$6\r\nMSETNX\r\n$7\r\nkey1111\r\n$6\r\nvalue1\r\n$7\r\nkey2222\r\n$6\r\nvalue2\r\n$7\r\nkey3333\r\n$6\r\nvalue3\r\n$7\r\nkey4444\r\n$6\r\nvalue4\r\n

:1
  • SETNX KEY VALUE
*3\r\n$5\r\nSETNX\r\n$8\r\nsetNxKey\r\n$6\r\nvalue1\r\n

:0
  • PSETEX KEY EXPIRE VALUE
*4\r\n$6\r\nPSETEX\r\n$8\r\nsetex_32\r\n$4\r\n2000\r\n$4\r\ntest\r\n

+OK
  • MGET KEY1 KEY2
*4\r\n$4\r\nMGET\r\n$4\r\nkey1\r\n$4\r\nkey2\r\n$4\r\nkey3\r\n

*3
$6
value1
$6
value2
$6
value3
  • SETBIT KEY INDEX VALUE
*4\r\n$6\r\nSETBIT\r\n$9\r\nsetbit_33\r\n$1\r\n6\r\n$1\r\n1\r\n

:0
  • GETBIT KEY INDEX
*3\r\n$6\r\nGETBIT\r\n$9\r\ngetbit_34\r\n$1\r\n5\r\n

:1
  • GETSET KEY VALUE
*3\r\n$6\r\nGETSET\r\n$9\r\ngetset_35\r\n$7\r\nnewtest\r\n

$4
test
  • GETRANGE KEY START END
*4\r\n$8\r\nGETRANGE\r\n$11\r\ngetrange_36\r\n$1\r\n0\r\n$1\r\n5\r\n

$6
test12
  • INCR KEY
*2\r\n$4\r\nINCR\r\n$7\r\nincr_24\r\n

:1
  • INCRBY KEY VALUE
*3\r\n$6\r\nINCRBY\r\n$9\r\nincrby_25\r\n$2\r\n10\r\n

:10
  • DECR KEY
*2\r\n$4\r\nDECR\r\n$7\r\ndecr_26\r\n

:-1
  • DECRBY KEY VALUE
*3\r\n$6\r\nDECRBY\r\n$9\r\ndecrby_27\r\n$1\r\n1\r\n

:-1

LIST 命令

  • LPUSH KEY VALUE1 VALUE2
*5\r\n$5\r\nLPUSH\r\n$8\r\nlpush_53\r\n$5\r\npanzi\r\n$8\r\nxiaoming\r\n$8\r\nzhangsan\r\n

:3
  • BLPOP KEY TIMEOUT
*3\r\n$5\r\nBLPOP\r\n$8\r\nblpop_54\r\n$1\r\n2\r\n

*2
$8
blpop_54
$6
value4
  • BRPOP KEY TIMEOUT
*3\r\n$5\r\nBRPOP\r\n$8\r\nbrpop_55\r\n$1\r\n2\r\n

*2
$8
brpop_55
$6
value1
  • LINDEX KEY INDEX
*3\r\n$6\r\nLINDEX\r\n$9\r\nlindex_56\r\n$1\r\n2\r\n

$6
value2
  • LLEN KEY
*2\r\n$4\r\nLLEN\r\n$7\r\nllen_57\r\n

:4
  • LPOP KEY
*2\r\n$4\r\nLPOP\r\n$7\r\nlpop_58\r\n

$6
value4
  • RPOP KEY
*2\r\n$4\r\nRPOP\r\n$7\r\nrpop_59\r\n

$6
value1
  • RPUSH KEY VALUE1 VALUE2
*5\r\n$5\r\nRPUSH\r\n$8\r\nrpush_60\r\n$5\r\npanzi\r\n$8\r\nxiaoming\r\n$8\r\nzhangsan\r\n

:3
  • RPUSHX KEY VALUE
*3\r\n$6\r\nRPUSHX\r\n$9\r\nrpushx_61\r\n$5\r\ntest1\r\n

:5
  • LPUSHX KEY VALUE
*3\r\n$6\r\nLPUSHX\r\n$9\r\nlpushx_62\r\n$5\r\npanzi\r\n

:0
  • LTRIM KEY START END
*4\r\n$5\r\nLTRIM\r\n$8\r\nltrim_63\r\n$1\r\n0\r\n$1\r\n2\r\n

+OK
  • LSET KEY INDEX VALUE
*4\r\n$4\r\nLSET\r\n$7\r\nlset_64\r\n$1\r\n0\r\n$8\r\nvalueset\r\n

+OK
  • LREM KEY COUNT VALUE
*4\r\n$4\r\nLREM\r\n$7\r\nlrem_65\r\n$1\r\n1\r\n$6\r\nvalue4\r\n

:1
  • LRANGE KEY START END
*4\r\n$6\r\nLRANGE\r\n$9\r\nlrange_66\r\n$1\r\n0\r\n$1\r\n2\r\n

*3
$6
value4
$6
value3
$6
value2
  • LINSERT KEY BEFORE/AFTER PIVOT VALUE
*5\r\n$7\r\nLINSERT\r\n$10\r\nlinsert_67\r\n$6\r\nBEFORE\r\n$6\r\nvalue1\r\n$9\r\npreValue1\r\n

:5
  • RPOPLPUSH KEY DESTINATION
*3\r\n$9\r\nRPOPLPUSH\r\n$12\r\nrpoplpush_68\r\n$15\r\nrpoplpush_68des\r\n

$6
value1
  • BRPOPLPUSH KEY DESTINATION TIMEOUT
*4\r\n$10\r\nBRPOPLPUSH\r\n$13\r\nbrpoplpush_69\r\n$16\r\nbrpoplpush_69des\r\n$1\r\n2\r\n

$6
value1

HASH 命令

  • HSETNX KEY FIELD VALUE
*4\r\n$6\r\nHSETNX\r\n$8\r\nhsetnx_2\r\n$8\r\nhsetnx_1\r\n$2\r\nv1\r\n

:1
  • HSET KEY FIELD VALUE
*4\r\n$4\r\nHSET\r\n$5\r\nuser2\r\n$2\r\nf1\r\n$2\r\nv1\r\n

:1
  • HLEN KEY
*2\r\n$4\r\nHLEN\r\n$5\r\nuser2\r\n

:3
  • HKEYS KEY
*2\r\n$5\r\nHKEYS\r\n$5\r\nuser1\r\n

*3
$2
f1
$2
f2
$2
f3
  • HMGET KEY FIELD1 FIELD2
*4\r\n$5\r\nHMGET\r\n$5\r\nuser3\r\n$2\r\nf1\r\n$2\r\nf2\r\n

*2
$2
v1
$2
v2
  • HMSET KEY FIELD1 VALUE1 FIELD2 VALUE2
*10\r\n$5\r\nHMSET\r\n$5\r\nuser4\r\n$4\r\nkey1\r\n$6\r\nvalue1\r\n$4\r\nkey2\r\n$6\r\nvalue2\r\n$4\r\nkey3\r\n$6\r\nvalue3\r\n$4\r\nkey4\r\n$6\r\nvalue4\r\n

+OK
  • HVALS KEY
*2\r\n$5\r\nHVALS\r\n$5\r\nuser5\r\n

*3
$2
v1
$2
v2
$2
v3
  • HEXISTS KEY FIELD
*3\r\n$7\r\nHEXISTS\r\n$11\r\nhashexist_3\r\n$8\r\nexistkey\r\n

:1
  • HDEL KEY FIELD
*3\r\n$4\r\nHDEL\r\n$6\r\nhdel_4\r\n$6\r\ndelkey\r\n

:1
  • HGET KEY FIELD
*3\r\n$4\r\nHGET\r\n$9\r\nhashget_5\r\n$6\r\ngetkey\r\n

$5
value
  • HGETALL
*2\r\n$7\r\nHGETALL\r\n$9\r\nhgetall_7\r\n

*6
$2
f1
$2
v1
$2
f2
$2
v2
$2
f3
$2
v3
  • HINCRBY KEY FIELD INCREMENT
*4\r\n$7\r\nHINCRBY\r\n$9\r\nhincrby_8\r\n$2\r\nt1\r\n$1\r\n1\r\n

:1

SET 命令

  • SADD KEY MEMBER1 MEMBER2
*8\r\n$4\r\nSADD\r\n$10\r\nsinter2_41\r\n$1\r\n1\r\n$1\r\n2\r\n$1\r\n3\r\n$1\r\n4\r\n$1\r\n5\r\n$1\r\n6\r\n

:6
  • SINTERSTORE DESTINATION KEY1 KEY2
*4\r\n$11\r\nSINTERSTORE\r\n$10\r\nsinter3_42\r\n$10\r\nsinter2_41\r\n$10\r\nsinter1_40\r\n

:4
  • SUNIONSTORE DESTINATION KEY1 KEY2
*4\r\n$11\r\nSUNIONSTORE\r\n$10\r\nsunion2_45\r\n$9\r\nsunion_43\r\n$10\r\nsunion1_44\r\n

:8
  • SSCAN KEY CURSOR MATCH COUNT
*7\r\n$5\r\nSSCAN\r\n$8\r\nsscan_46\r\n$1\r\n0\r\n$5\r\nMATCH\r\n$2\r\nh*\r\n$5\r\nCOUNT\r\n$1\r\n1\r\n

*2
$1
2
*1
$2
hi
  • SPOP KEY
*2\r\n$4\r\nSPOP\r\n$7\r\nspop_47\r\n

$-1
  • SISMEMBER KEY MEMBER
*3\r\n$9\r\nSISMEMBER\r\n$12\r\nsismember_48\r\n$1\r\n1\r\n

:1
  • SREM KEY MEMBER1 MEMBER2
*3\r\n$4\r\nSREM\r\n$7\r\nsrem_49\r\n$1\r\n1\r\n

:1
  • SINTER KEY1 KEY2
*3\r\n$6\r\nSINTER\r\n$10\r\nsinter2_51\r\n$10\r\nsinter1_50\r\n

*4
$1
1
$1
2
$1
3
$1
4
  • SUNION KEY1 KEY2
*3\r\n$6\r\nSUNION\r\n$9\r\nsunion_52\r\n$10\r\nsunion1_53\r\n

*8
$1
1
$1
2
$1
3
$1
4
$1
5
$1
6
$1
7
$1
8
  • SRANDMEMBER KEY COUNT
*3\r\n$11\r\nSRANDMEMBER\r\n$15\r\nsrandmembers_54\r\n$1\r\n6\r\n

*5
$1
1
$1
2
$1
3
$1
4
$1
5
  • SMEMBERS KEY
*2\r\n$8\r\nSMEMBERS\r\n$11\r\nsmembers_55\r\n

*3
$1
1
$1
2
$1
3
  • SCARD KEY
*2\r\n$5\r\nSCARD\r\n$8\r\nscard_58\r\n

:4
  • SDIFF KEY1 KEY2
*3\r\n$5\r\nSDIFF\r\n$9\r\nsdiff2_60\r\n$9\r\nsdiff1_59\r\n

*2
$1
5
$1
6
  • SMOVE SOURCE DESTINATION MEMBER
*4\r\n$5\r\nSMOVE\r\n$8\r\nsmove_61\r\n$9\r\nsmove1_62\r\n$1\r\n1\r\n

:1
  • SDIFFSTORE DESTINATION KEY1 KEY2
*4\r\n$10\r\nSDIFFSTORE\r\n$9\r\nsdiff3_66\r\n$9\r\nsdiff2_65\r\n$9\r\nsdiff1_64\r\n

:2

SORTED SET 命令

  • ZRANGEBYLEX
*4\r\n$11\r\nZRANGEBYLEX\r\n$15\r\nzrangebylex_236\r\n$1\r\n-\r\n$7\r\n[value3\r\n

*3
$6
value1
$6
value2
$6
value3
  • ZCOUNT
*4\r\n$6\r\nZCOUNT\r\n$10\r\nzcount_238\r\n$1\r\n1\r\n$1\r\n5\r\n

:5
  • ZRANGEBYSCORE
*4\r\n$13\r\nZRANGEBYSCORE\r\n$17\r\nzrangebyscore_239\r\n$1\r\n1\r\n$1\r\n3\r\n

*3
$6
value1
$6
value2
$6
value3
  • ZREVRANGEBYSCORE
*8\r\n$16\r\nZREVRANGEBYSCORE\r\n$20\r\nzrevrangebyscore_241\r\n$1\r\n3\r\n$1\r\n1\r\n$10\r\nWITHSCORES\r\n$5\r\nLIMIT\r\n$1\r\n0\r\n$1\r\n2\r\n

*4
$6
value3
$1
3
$6
value2
$1
2
  • ZRANK
*3\r\n$5\r\nZRANK\r\n$9\r\nzrank_244\r\n$6\r\nvalue4\r\n

$-1
  • ZREVRANGEBYSCORE
*4\r\n$16\r\nZREVRANGEBYSCORE\r\n$17\r\nzrangebyscore_246\r\n$4\r\n+inf\r\n$4\r\n-inf\r\n

*10
$7
value10
$6
value9
$6
value8
$6
value7
$6
value6
$6
value5
$6
value4
$6
value3
$6
value2
$6
value1
  • ZREVRANK
*3\r\n$8\r\nZREVRANK\r\n$11\r\nzrevank_248\r\n$6\r\nvalue4\r\n

:6
  • ZRANGEBYSCORE
*8\r\n$13\r\nZRANGEBYSCORE\r\n$17\r\nzrangebyscore_250\r\n$3\r\n1.0\r\n$3\r\n3.0\r\n$10\r\nWITHSCORES\r\n$5\r\nLIMIT\r\n$1\r\n0\r\n$1\r\n2\r\n

*4
$6
value1
$1
1
$6
value2
$1
2
  • ZREMRANGEBYSCORE
*4\r\n$16\r\nZREMRANGEBYSCORE\r\n$20\r\nzremrangebyscore_251\r\n$3\r\n1.0\r\n$3\r\n3.0\r\n

:3
  • ZREM
*3\r\n$4\r\nZREM\r\n$8\r\nzrem_253\r\n$4\r\ntest\r\n

:0
  • ZRANGEBYLEX
*7\r\n$11\r\nZRANGEBYLEX\r\n$15\r\nzrangebylex_256\r\n$7\r\n(value1\r\n$7\r\n[value3\r\n$5\r\nLIMIT\r\n$1\r\n0\r\n$1\r\n1\r\n

*1
$6
value2
  • ZREVRANGEBYSCORE
*8\r\n$16\r\nZREVRANGEBYSCORE\r\n$20\r\nzrevrangebyscore_257\r\n$3\r\n3.0\r\n$3\r\n1.0\r\n$10\r\nWITHSCORES\r\n$5\r\nLIMIT\r\n$1\r\n0\r\n$1\r\n2\r\n

*4
$6
value3
$1
3
$6
value2
$1
2
  • ZRANGEBYSCORE
*8\r\n$13\r\nZRANGEBYSCORE\r\n$17\r\nzrangebyscore_258\r\n$3\r\n1.0\r\n$3\r\n3.0\r\n$10\r\nWITHSCORES\r\n$5\r\nLIMIT\r\n$1\r\n0\r\n$1\r\n2\r\n

*4
$6
value1
$1
1
$6
value2
$1
2
  • ZINCRBY
*4\r\n$7\r\nZINCRBY\r\n$10\r\nzcount_262\r\n$1\r\n1\r\n$6\r\nvalue1\r\n

$1
2
  • ZSCORE
*3\r\n$6\r\nZSCORE\r\n$10\r\nzscore_263\r\n$6\r\nvalue1\r\n

$-1
  • ZCARD
*2\r\n$5\r\nZCARD\r\n$9\r\nzcard_269\r\n

:10
  • ZRANGE
*5\r\n$6\r\nZRANGE\r\n$10\r\nzrange_272\r\n$1\r\n1\r\n$2\r\n-1\r\n$10\r\nWITHSCORES\r\n

*18
$6
value2
$1
2
$6
value3
$1
3
$6
value4
$1
4
$6
value5
$1
5
$6
value6
$1
6
$6
value7
$1
7
$6
value8
$1
8
$6
value9
$1
9
$7
value10
$2
10
  • ZRANGEBYSCORE
*4\r\n$13\r\nZRANGEBYSCORE\r\n$17\r\nzrangebyscore_275\r\n$1\r\n1\r\n$1\r\n3\r\n

*3
$6
value1
$6
value2
$6
value3
  • ZLEXCOUNT
*4\r\n$9\r\nZLEXCOUNT\r\n$13\r\nzlexcount_281\r\n$7\r\n[value1\r\n$7\r\n[value6\r\n

:6
  • ZRANGEBYSCORE
*8\r\n$13\r\nZRANGEBYSCORE\r\n$17\r\nzrangebyscore_283\r\n$1\r\n1\r\n$1\r\n3\r\n$10\r\nWITHSCORES\r\n$5\r\nLIMIT\r\n$1\r\n0\r\n$1\r\n2\r\n

*4
$6
value1
$1
1
$6
value2
$1
2
  • ZREVRANGEBYSCORE
*8\r\n$16\r\nZREVRANGEBYSCORE\r\n$20\r\nzrevrangebyscore_285\r\n$3\r\n3.0\r\n$3\r\n1.0\r\n$10\r\nWITHSCORES\r\n$5\r\nLIMIT\r\n$1\r\n0\r\n$1\r\n2\r\n

*4
$6
value3
$1
3
$6
value2
$1
2
  • ZRANGEBYLEX
*4\r\n$11\r\nZRANGEBYLEX\r\n$15\r\nzrangebylex_286\r\n$7\r\n[value1\r\n$7\r\n[value3\r\n

*3
$6
value1
$6
value2
$6
value3
  • ZRANGEBYLEX
*7\r\n$11\r\nZRANGEBYLEX\r\n$15\r\nzrangebylex_290\r\n$7\r\n[value1\r\n$7\r\n[value3\r\n$5\r\nLIMIT\r\n$1\r\n0\r\n$1\r\n1\r\n

*1
$6
value1
  • ZREMRANGEBYRANK
*4\r\n$15\r\nZREMRANGEBYRANK\r\n$19\r\nzremrangebyrank_291\r\n$1\r\n1\r\n$1\r\n5\r\n

:5

其他命令

  • DEL KEY
*2\r\n$3\r\nDEL\r\n$6\r\ndel_19\r\n

:1
  • EXISTS KEY
*2\r\n$6\r\nEXISTS\r\n$9\r\nexists_18\r\n

:1
  • SELECT
*2\r\n$6\r\nSELECT\r\n$1\r\n1\r\n

+OK
  • PING
*1\r\n$4\r\nPING\r\n

+PONG

Redis基本数据类型命令汇总的更多相关文章

  1. redis的数据类型命令

    存储sortedset: 存储:zadd key score menber1 score menber2 ... 升序排列:zrange key start end [withscores] 降序排列 ...

  2. Redis系列(二):Redis的数据类型及命令操作

    原文链接(转载请注明出处):Redis系列(二):Redis的数据类型及命令操作 Redis 中常用命令 Redis 官方的文档是英文版的,当然网上也有大量的中文翻译版,例如:Redis 命令参考.这 ...

  3. Redis的数据类型及其常用命令

    快速入门Redis 首先安装redis: windows下安装redis Linux下安装redis 1. 什么是redis Redis属于nosql(非关系型数据库) 关系型数据库是基于关系表的数据 ...

  4. 大数据学习day31------spark11-------1. Redis的安装和启动,2 redis客户端 3.Redis的数据类型 4. kafka(安装和常用命令)5.kafka java客户端

    1. Redis Redis是目前一个非常优秀的key-value存储系统(内存的NoSQL数据库).和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list ...

  5. 【Redis数据库】命令学习笔记——发布订阅、事务、脚本、连接等命令汇总

    本篇基于redis 4.0.11版本,学习发布订阅.事务.脚本.连接的相关命令. Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. 序号 ...

  6. 《Redis入门指南(第二版)》读书思考总结之Redis五大数据类型

    热身:系统级命令 1. 获得符合规则的键名列表 KEYS pattern 模式匹配 产品的缓存:product+"."+....;  => keys product* 订单的 ...

  7. Redis常用数据类型介绍、使用场景及其操作命令

    Redis常用数据类型介绍.使用场景及其操作命令 本文章同时也在cpper.info发布. Redis目前支持5种数据类型,分别是: 1.String(字符串) 2.List(列表) 3.Hash(字 ...

  8. Redis笔记(三)Redis的数据类型

    前面说过,Redis的一大特性是支持丰富的数据类型, 这为更多的应用场景提供了可能. Redis有五种数据类型,包括string,list,set,sorted set和hash,注意,Redis的数 ...

  9. Redis常用数据类型

    Redis常用数据类型 转载自:http://blog.sina.com.cn/s/blog_7f37ddde0101021q.html     Redis最为常用的数据类型主要有以下五种: ●Str ...

随机推荐

  1. 获取本地内网和外网IP地址

    public class IPUtil { /// <summary> /// 获取本地内网IP /// </summary> /// <returns></ ...

  2. WinForm窗体多线程操作实例

    最近在学习C# 多线程相关知识,这块一直比较薄弱,在网上查了一下资料,学习了一下前辈们的经验,小弟自己也比葫芦画瓢的写了一个,自学一下. 代码如下 using System; using System ...

  3. Python Django migrate 报错解决办法

    1. 在现有基础上又添加一个表的时候migrate报错 migrate报错django.db.utils.OperationalError: (1050, "Table 'cmdb_eidc ...

  4. 用jquery实现带左右按键的轮播图

    成品如下: 简单来说就是点击“右”按钮时,转换到右边的下一幅图片,同时上面的小方块颜色也跟着改变,如果已经是最后一幅图片,再点击“右”,则转换到第一幅图片,是直接向左移找到第一幅图的,明天再做一下无缝 ...

  5. CSS属性display的浅略探讨

    display 的属性值有:none|inline|block|inline-block|list-item|run-in|table|inline-table|table-row-group|tab ...

  6. redis window 安装测试--记录

    1.下载地址https://github.com/dmajkic/redis/downloads 2.打开一个cmd窗口,使用cd命令切换到指定目录(D:\redis\64bit)运行 redis-s ...

  7. 献给java求职路上的你们

    为了更好的树立知识体系,我附加了相关的思维导图,分为pdf版和mindnote版.比如java相关的导图如下: 由于时间仓促,有些地方未写完,后面会继续补充.如有不妥之处,欢迎及时与我沟通. 相关概念 ...

  8. vue项目部署上线

    前言 今天把自己写的demo登录写完了,就想着试着走一下部署上线的流程.参考了很多的文档,终于成功进行了部署.在这里将服务器的搭建和vue项目的 部署上线进行整理(都是基础的知识,希望对大家有帮助.对 ...

  9. Ubuntu16安装GPU版本TensorFlow(个人笔记本电脑)

    想着开始学习tf了怎么能不用GPU,网上查了一下发现GeForce GTX确实支持GPU运算,所以就尝试部署了一下,在这里记录一下,避免大家少走弯路. 使用个人笔记本电脑thinkpadE570,内存 ...

  10. CCSUOJ评测系统——第二次scrum冲刺

    1.小组成员 舒 溢 许嘉荣 唐 浩 黄欣欣 廖帅元 2.第二次冲刺任务安排 对HUSTOJ数据库进行分析 序号 表名 作用 备注 1 compileinfo 记录编译错误的记录 2 contest ...