redis 基本类型和命令(一)
一、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 基本类型和命令(一)的更多相关文章
- redis基本类型和使用
redis存储数据的基本类型有:string(字符串类型).hash(散列类型).list(列表类型).set(集合类型).zset(有序集合类型). 依次做一些练习.redis命令不区分大小写. k ...
- redis基本类型和操作
基本类型:string hash list set sorted set 添加String 类型(最基本的key,value形式) set str1 s1 获取value get str1 添加has ...
- 魔改redis之添加命令hrandmember
魔改redis之添加命令hrandmember 目录 魔改redis之添加命令hrandmember 正文 前言 Set类型与srandmember命令 Hash类型对比Set类型 hrandmemb ...
- 【Java心得总结一】Java基本类型和包装类型解析
说到数据类型这个问题是一个基本的不能再基本的问题,我们当初编程入门第一课一般就是讲数据类型,而今天我想记录的是一个在Java中容易忽略的问题,即基本类型和包装类型. 一.基本类型出现的原因 我们都知道 ...
- Java Native Interface 二 JNI中对Java基本类型和引用类型的处理
本文是<The Java Native Interface Programmer's Guide and Specification>读书笔记 Java编程里会使用到两种类型:基本类型(如 ...
- Java基础——基本类型和包装类、基本类型和字符串之间的转换
基本类型和包装类之间的转换 基本类型和包装类之间经常需要互相转换,以 Integer 为例(其他几个包装类的操作雷同哦): 在 JDK1.5 引入自动装箱和拆箱的机制后,包装类和基本类型之间的转换就更 ...
- 基本类型和引用类型调用是的区别(Object.create)
var person = { name : 'jim', address:{ province:'浙', city:'A' } } var newPerson = Object.create(pers ...
- Scala编程--基本类型和操作
如果你熟悉Java,你会很开心地发现Java基本类型和操作符在Scala里有同样的意思.然而即使你是一位资深Java开发者,这里也仍然有一些有趣的差别使得本章值得一读.因为本章提到的一些Scala的方 ...
- Swift的基本类型和流程控制
Swift 是一门静态的强类型语言.它以简单.干净.可读性好等特点著称. 1. 为什么是静态语言? 首先静态语言比之动态语言,更具有安全性.它不允许类型之间自动的进行转换,必须要显示的转换.Swif ...
随机推荐
- Python数据结构 - 利用headp模块寻找最大N个元素并实现优先队列
用headp找到最大最小的N个值 import heapq nums = [1, 8, 2, 23, 7, -4, 18, 23, 42, 37, 2] print(heapq.nlargest(3, ...
- SUSE CaaS Platform 4 - 使用 Ceph RBD 作为持久存储(动态)
图1 架构图 图2 各存储插件对动态供给方式的支持状况 1.所有节点安装 # yum install ceph-common 复制 ceph.conf 到 worker 节点上 # scp admin ...
- Lab_0操作系统实验准备(全)
一.实验介绍 实验目的: 知识储备: 二.相关下载 1.下载镜像文件 这个镜像文件是vdi类型的,只能用visualbox下载 链接:https://pan.baidu.com/s/1L7WX6ju4 ...
- XCTF-web2
这种题目是比较简单地..直接写个小脚本就行了2333 <?php $a=" a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2Z ...
- github仓库添加MIT许可
俩种方法 1.新建仓库 直接在选择添加即可如下图: 2.为已创建仓库后添加MIT协议 直接在给工程根目录添加LICENSE文件提交即可,内容是 MIT License Copyright (c) 年份 ...
- [AI开发]视频结构化类应用的局限性
算法不是通用的,基于深度学习的应用系统不但做不到通用,即使对于同一类业务场景,还需要为每个场景做定制.特殊处理,这样才能有可能到达实用标准.这种局限性在计算机视觉领域的应用中表现得尤其突出,本文介绍基 ...
- django rest framework1
内容回顾: 1.开发模式 - 普通开发方式(前后端放在一起写) - 前后端分离 2.后端开发 为前端提供URL(API/接口的开发) 注:永远返回HttpResponse 3.Django FBV.C ...
- Python制作有道翻译小工具
该工具主要是利用了爬虫,爬取web有道翻译的内容. 然后利用简易GUI来可视化结果. 首先我们进入有道词典的首页,并点击翻译结果的审查元素 之后request响应网页,并分析网页,定位到翻译结果. 使 ...
- 微信小程序登入流程
微信小程序登入流程 一.首先前端先传code去后端 wx.login({ success(res) { if (res.code) { //发起网络请求 wx.request({ url: app.g ...
- 零基础:如何快速学习JavaScript,html+css技术
前端开发要学的知识内容涉及的会很宽泛,虽然说主要是HTML.CSS和JavaScript这些基础知识点,但达妹今天想强调一下,学前端开发除了要学这些基础知识外,学员还要在这之上进行延伸和深入的去学,而 ...