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

(1) string类型是Redis最基本的数据类型,一个键最大能存储512MB。可以包含任何数据。比如jpg图片或者序列化的对象 。

  操作命令 :Redis 的 SET 和 GET 命令  

127.0.0.1:> set str a
OK
127.0.0.1:> get str a
(error) ERR wrong number of arguments for 'get' command
127.0.0.1:> get str a
(error) ERR wrong number of arguments for 'get' command
127.0.0.1:> get str
"a"
127.0.0.1:> set str b
OK
127.0.0.1:> get str
"b"

(2) Redis hash 是一个键值对集合,一个string类型的field和value的映射表,hash特别适合用于存储对象,每个 hash 可以存储 2的32次方 - 1 键值对(40多亿)。

  操作命令: Redis HMSET, HEGTALL 命令。(key:user:2  value:偶数个值)  

127.0.0.1:> hmset user: a b c dd f d g
(error) ERR wrong number of arguments for HMSET
127.0.0.1:> hmset user: a b c dd f d g
OK
127.0.0.1:> hgetall user:
) "a"
) "b"
) "c"
) "dd"
) "f"
) "d"
) "g"
) ""
127.0.0.1:> hmset user: a b c dd f d g
OK
127.0.0.1:> hmset user: a b c dd f d g
(error) ERR wrong number of arguments for HMSET
127.0.0.1:> hmset user: a b c dd f d g
(error) ERR wrong number of arguments for HMSET
127.0.0.1:> hmset user: a b c dd f d g e
OK
127.0.0.1:> hmset user: a b c dd f d
OK

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

  操作命令: Redis lpush, lrange命令。   

127.0.0.1:> lpush list a
(integer)
127.0.0.1:> lpush list b
(integer)
127.0.0.1:> lpush list c
(integer)
127.0.0.1:> lrang list
(error) ERR unknown command 'lrang'
127.0.0.1:> lrange list
) "c"
) "b"
) "a"

(4)Redis的Set是string类型的无序集合,且元素有唯一性,通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。每个集合可存储 232 - 1个成员)

  操作命令: Redis sadd, smembers命令。(成功:1 失败:提示错误 重复:0)  

127.0.0.1:> sadd set a
(integer)
127.0.0.1:> sadd set b
(integer)
127.0.0.1:> sadd set a
(integer)
127.0.0.1:> sadd set c
(integer)
127.0.0.1:> smember set
(error) ERR unknown command 'smember'
127.0.0.1:> smembers set
) "c"
) "a"
) "b"

(5)Redis zset(有序集合) 是string类型元素的集合,且不允许重复的成员,每个元素都会关联一个double类型的数值,redis正是通过这个数值来为集合中的成员进行从小到大的排序,排序值可以重复

操作命令: Redis zadd, srangbyscore 命令。

127.0.0.1:> zadd zset a
(error) ERR wrong number of arguments for 'zadd' command
127.0.0.1:> zadd zset a
(integer)
127.0.0.1:> zadd zset a
(integer)
127.0.0.1:> zadd zset b
(integer)
127.0.0.1:> zadd zset c
(integer)
127.0.0.1:> zadd zset d
(integer)
127.0.0.1:> zadd zset f
(integer)
127.0.0.1:> zrangebyscore zset
(error) ERR wrong number of arguments for 'zrangebyscore' command
127.0.0.1:> zrangebyscore zset
) "a"
) "b"
) "c"
) "f"

(6)执行 PING 命令,该命令用于检测 redis 服务是否启动。

(7)Redis DEL 命令用于删除已存在的键,不存在的 key 会被忽略。

  语法:DEL KEY_NAME

(8)Redis DUMP 命令用于序列化给定 key ,并返回被序列化的值。

  语法:DUMP KEY_NAME

(9)Redis EXISTS 命令用于检查给定 key 是否存在,若 key 存在返回 1 ,否则返回 0。

  语法:EXISTS KEY_NAME

(10)Redis Expire 命令用于设置 key 的过期时间。key 过期后将不再可用,会自动删除该key值。(秒为单位)。

  语法:Expire KEY_NAME TIME_IN_SECONDS

(11)Redis Expireat 命令用于以 UNIX 时间戳(unix timestamp)格式设置 key 的过期时间,key 过期后将不再可用。

  语法:Expireat KEY_NAME TIME_IN_UNIX_TIMESTAMP

(12)Redis PEXPIREAT 命令用于设置 key 的过期时间,已毫秒技,key 过期后将不再可用。

  语法:PEXPIREAT KEY_NAME TIME_IN_MILLISECONDS_IN_UNIX_TIMESTAMP

(13)Redis Keys 命令用于查找所有符合给定模式 pattern 的 key 。

  语法:KEYS PATTERN

(14)Redis MOVE 命令用于将当前数据库的 key 移动到给定的数据库 db 当中。

  语法:MOVE KEY_NAME DESTINATION_DATABASE

(15)Redis PERSIST 命令用于移除给定 key 的过期时间,使得 key 永不过期。

  语法:PERSIST KEY_NAME

(16)Redis Pttl 命令以毫秒为单位返回 key 的剩余过期时间。

  语法:PTTL KEY_NAME

(17)Redis TTL 命令以秒为单位返回 key 的剩余过期时间。

  语法:TTL KEY_NAME

(18)Redis RANDOMKEY 命令从当前数据库中随机返回一个 key 。

  语法:RANDOMKEY

(19)Redis Rename 命令用于修改 key 的名称 。

  语法:RENAME OLD_KEY_NAME NEW_KEY_NAME

(20)Redis Renamenx 命令用于在新的 key 不存在时修改 key 的名称 。

  语法:RENAMENX OLD_KEY_NAME NEW_KEY_NAME

(21)Redis Type 命令用于返回 key 所储存的值的类型。

  语法:TYPE KEY_NAME

字符串常用命令

(1)Redis SET 命令用于设置给定 key 的值。如果 key 已经存储其他值, SET 就覆写旧值,且无视类型。

  语法:SET KEY_NAME VALUE

(2)Redis Get 命令用于获取指定 key 的值。如果 key 不存在,返回 nil 。如果key 储存的值不是字符串类型,返回一个错误。

  语法:GET KEY_NAME

(3)Redis Getrange 命令用于获取存储在指定 key 中字符串的子字符串。字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内)。

  语法:GETRANGE KEY_NAME start end

(4)Redis Getset 命令用于设置指定 key 的值,并返回 key 旧的值。

  语法:GETSET KEY_NAME VALUE

(5)Redis Getbit 命令用于对 key 所储存的字符串值,获取指定偏移量上的位(bit)。

  语法:GETBIT KEY_NAME OFFSET

(6)Redis Mget 命令返回所有(一个或多个)给定 key 的值。 如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。

  语法:MGET KEY1 KEY2 .. KEYN

(7)Redis Setbit 命令用于对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。

  语法:Setbit KEY_NAME OFFSET

(8)Redis Setex 命令为指定的 key 设置值及其过期时间。如果 key 已经存在, SETEX 命令将会替换旧的值。

  语法:SETEX KEY_NAME TIMEOUT VALUE

(9)Redis Setnx(SET if Not eXists) 命令在指定的 key 不存在时,为 key 设置指定的值。

  语法:SETNX KEY_NAME VALUE

(10)Redis Setrange 命令用指定的字符串覆盖给定 key 所储存的字符串值,覆盖的位置从偏移量 offset 开始。

  语法:SETRANGE KEY_NAME OFFSET VALUE

(11)Redis Strlen 命令用于获取指定 key 所储存的字符串值的长度。当 key 储存的不是字符串值时,返回一个错误。

  语法:STRLEN KEY_NAME

(12)Redis Mset 命令用于同时设置一个或多个 key-value 对。

  语法:MSET key1 value1 key2 value2 .. keyN valueN

(13)Redis Msetnx 命令用于所有给定 key 都不存在时,同时设置一个或多个 key-value 对。

  语法:MSETNX key1 value1 key2 value2 .. keyN valueN

(14)Redis Psetex 命令以毫秒为单位设置 key 的生存时间。

  语法:PSETEX key1 EXPIRY_IN_MILLISECONDS value1

(15)Redis Incr 命令将 key 中储存的数字值增一。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。

  语法:INCR KEY_NAME

(16)Redis Incrby 命令将 key 中储存的数字加上指定的增量值。

  语法:INCRBY KEY_NAME INCR_AMOUNT

(17)Redis Incrbyfloat 命令为 key 中所储存的值加上指定的浮点数增量值。

  语法:INCRBYFLOAT KEY_NAME INCR_AMOUNT

(18)Redis Decr 命令将 key 中储存的数字值减一。

  语法:DECR KEY_NAME

(19)Redis Decrby 命令将 key 所储存的值减去指定的减量值。本操作的值限制在 64 位(bit)有符号数字表示之内。

  语法:DECRBY KEY_NAME DECREMENT_AMOUNT

(20)Redis Append 命令用于为指定的 key 追加值。

  语法:APPEND KEY_NAME NEW_VALUE

哈希(Hash)常用命令

(1)Redis Hdel 命令用于删除哈希表 key 中的一个或多个指定字段,不存在的字段将被忽略。

  语法:HDEL KEY_NAME FIELD1.. FIELDN

(2)Redis Hexists 命令用于查看哈希表的指定字段是否存在。

  语法:HEXISTS KEY_NAME FIELD_NAME

(3)Redis Hget 命令用于返回哈希表中指定字段的值。

  语法:HGET KEY_NAME FIELD_NAME

(4)Redis Hgetall 命令用于返回哈希表中,所有的字段和值。

  语法:HGETALL KEY_NAME

(5)Redis Hincrby 命令用于为哈希表中的字段值加上指定增量值。增量也可以为负数,相当于对指定字段进行减法操作。

  语法:HINCRBY KEY_NAME FIELD_NAME INCR_BY_NUMBER

(6)Redis Hincrbyfloat 命令用于为哈希表中的字段值加上指定浮点数增量值。如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。

  语法:HINCRBYFLOAT KEY_NAME FIELD_NAME INCR_BY_NUMBER

(7)Redis Hkeys 命令用于获取哈希表中的所有字段名。

  语法:HKEYS KEY_NAME

(8)Redis Hlen 命令用于获取哈希表中字段的数量。

  语法:HLEN KEY_NAME

(9)Redis Hmget 命令用于返回哈希表中,一个或多个给定字段的值。

  语法:HMGET KEY_NAME FIELD1...FIELDN

(10)Redis Hmset 命令用于同时将多个 field-value (字段-值)对设置到哈希表中。此命令会覆盖哈希表中已存在的字段。

  语法:HMSET KEY_NAME FIELD1 VALUE1 ...FIELDN VALUEN

(11)Redis Hset 命令用于为哈希表中的字段赋值 。

  语法:HSET KEY_NAME FIELD VALUE

(12)Redis Hsetnx 命令用于为哈希表中不存在的的字段赋值 。

  语法:HSETNX KEY_NAME FIELD VALUE

(13)Redis Hvals 命令返回哈希表所有字段的值。

  语法:HVALS KEY_NAME

列表(List)常用命令

(1)Redis Blpop 命令移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

  语法:BLPOP LIST1 LIST2 .. LISTN TIMEOUT

(2)Redis Brpop 命令移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

  语法:BRPOP LIST1 LIST2 .. LISTN TIMEOUT

(3)Redis Brpoplpush 命令从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

  语法:BRPOPLPUSH LIST1 ANOTHER_LIST TIMEOUT

(4)Redis Lindex 命令用于通过索引获取列表中的元素。你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

  语法:LINDEX KEY_NAME INDEX_POSITION

(5)Redis Linsert 命令用于在列表的元素前或者后插入元素。 当指定元素不存在于列表中时,不执行任何操作。 当列表不存在时,被视为空列表,不执行任何操作。 如果 key 不是列表类型,返回一个错误。

  语法:LINSERT KEY_NAME BEFORE EXISTING_VALUE NEW_VALUE

(6)Redis Llen 命令用于返回列表的长度。 如果列表 key 不存在,则 key 被解释为一个空列表,返回 0 。 如果 key 不是列表类型,返回一个错误。

  语法:LLEN KEY_NAME

(7)Redis Lpop 命令用于移除并返回列表的第一个元素。

  语法:Lpop KEY_NAME

(8)Redis Lpush 命令将一个或多个值插入到列表头部。列表不存在时建立空列表。

  语法:LPUSH KEY_NAME VALUE1.. VALUEN

(9)Redis Lpushx 将一个或多个值插入到已存在的列表头部,列表不存在时操作无效。

  语法:LPUSHX KEY_NAME VALUE1.. VALUEN

(10)Redis Lrange 返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。

  语法:LRANGE KEY_NAME START END

(11)Redis Lrem 根据参数 COUNT 的值,移除列表中与参数 VALUE 相等的元素。

  count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT.

  count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值

  count = 0 : 移除表中所有与 VALUE 相等的值

  语法:LREM KEY_NAME COUNT VALUE

(12)Redis Lset 通过索引来设置元素的值。

  语法:LSET KEY_NAME INDEX VALUE 

(13)Redis Ltrim 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。

  语法:LTRIM KEY_NAME START STOP (STOP 可以为负数,倒数)

(14)Redis Rpop 命令用于移除并返回列表的最后一个元素。

  语法:RPOP KEY_NAME

(15)Redis Rpoplpush 命令用于移除列表的最后一个元素,并将该元素添加到另一个列表并返回。

  语法:RPOPLPUSH SOURCE_KEY_NAME DESTINATION_KEY_NAME

(16)Redis Rpush 命令用于将一个或多个值插入到列表的尾部(最右边)。如果列表不存在,创建空列表、

  语法:RPUSH KEY_NAME VALUE1..VALUEN

(17)Redis Rpushx 命令用于将一个或多个值插入到已存在的列表尾部(最右边)。如果列表不存在,操作无效

  语法:RPUSHX KEY_NAME VALUE1..VALUEN

  

其他命令请参考  https://redis.io/commands

redis 基本类型和命令(一)的更多相关文章

  1. redis基本类型和使用

    redis存储数据的基本类型有:string(字符串类型).hash(散列类型).list(列表类型).set(集合类型).zset(有序集合类型). 依次做一些练习.redis命令不区分大小写. k ...

  2. redis基本类型和操作

    基本类型:string hash list set sorted set 添加String 类型(最基本的key,value形式) set str1 s1 获取value get str1 添加has ...

  3. 魔改redis之添加命令hrandmember

    魔改redis之添加命令hrandmember 目录 魔改redis之添加命令hrandmember 正文 前言 Set类型与srandmember命令 Hash类型对比Set类型 hrandmemb ...

  4. 【Java心得总结一】Java基本类型和包装类型解析

    说到数据类型这个问题是一个基本的不能再基本的问题,我们当初编程入门第一课一般就是讲数据类型,而今天我想记录的是一个在Java中容易忽略的问题,即基本类型和包装类型. 一.基本类型出现的原因 我们都知道 ...

  5. Java Native Interface 二 JNI中对Java基本类型和引用类型的处理

    本文是<The Java Native Interface Programmer's Guide and Specification>读书笔记 Java编程里会使用到两种类型:基本类型(如 ...

  6. Java基础——基本类型和包装类、基本类型和字符串之间的转换

    基本类型和包装类之间的转换 基本类型和包装类之间经常需要互相转换,以 Integer 为例(其他几个包装类的操作雷同哦): 在 JDK1.5 引入自动装箱和拆箱的机制后,包装类和基本类型之间的转换就更 ...

  7. 基本类型和引用类型调用是的区别(Object.create)

    var person = { name : 'jim', address:{ province:'浙', city:'A' } } var newPerson = Object.create(pers ...

  8. Scala编程--基本类型和操作

    如果你熟悉Java,你会很开心地发现Java基本类型和操作符在Scala里有同样的意思.然而即使你是一位资深Java开发者,这里也仍然有一些有趣的差别使得本章值得一读.因为本章提到的一些Scala的方 ...

  9. Swift的基本类型和流程控制

    Swift  是一门静态的强类型语言.它以简单.干净.可读性好等特点著称. 1. 为什么是静态语言? 首先静态语言比之动态语言,更具有安全性.它不允许类型之间自动的进行转换,必须要显示的转换.Swif ...

随机推荐

  1. Java中的static(1)【持续更新】——关于Eclipse的No enclosing instance of type ... 错误的理解和改正

    No enclosing instance of type SomeClass is accessible. Must qualify the allocation with an enclosing ...

  2. 教老婆学Linux运维(二)Linux常用命令指南【上】

    目录 教老婆学Linux(二)Linux常用命令指南[上] 一.概述 二.常用命令 教老婆学Linux(二)Linux常用命令指南[上] 作者:姚毛毛的博客 tips:文章太长,分两篇发出,本篇发前三 ...

  3. Java基础学习笔记(五) - 常用的API

    API介绍 概念:API 即应用编程程序接口.Java API是JDK中提供给我们使用的类说明文档,这些类将底层的代码实现封装.无需关心这些类是如何实现,只需要学习如何使用. 使用:通过API找到需要 ...

  4. ELK 学习笔记之 Logstash之output配置

    Logstash之output配置: 输出到file 配置conf: input{ file{ path => "/usr/local/logstash-5.6.1/bin/spark ...

  5. 快学Scala 第十三课 (类型层级,对象相等性)

    Scala 类型层级: 对象相等性: 和Java一样要重写equals方法和hashcode方法 class Student(val id: Int, val name: String) { over ...

  6. Java匹马行天下之教你用学汉语式方法学编程语言

    Java匹马行天下之教你用学汉语式方法学编程语言 前言: 前段时间接连更新了带小白从入门到了解的几篇博客: <Java匹马行天下之编程常识知多少> <Java匹马行天下之走进编程的殿 ...

  7. springmvc中重定向该如何处理?

    如果登录成功,会重定向到系统首页 response.sendRedirect("jsp/frame.jsp"); 在springmvc中,应该如何处理?是否可以直接使用 retur ...

  8. vue常见问题随笔集

    1.vuex操作对应关系 设置          触发/获取 action <-> dispatch mutations <-> commit getters <-> ...

  9. 编译安装msyql

    环境: ubuntu18.04.2 mysql5.7.21 #创建mysql属组 groupadd mysql useradd -g mysql mysql #查看属组 tail /etc/passw ...

  10. Tensorflow-gpu1.13.1 和 Tensorflow-gpu2.0.0共存之安装教程

    tf1.13.1 及 tf2.0.0  相关依赖及版本 硬件说明:显卡NVIDIA-GEFORCE-GTX-1060 1.驱动版本检查,并且更新显卡驱动[这一步很重要,你的驱动版本低了,cuda及cu ...