redis --------- 使用命令(每天一个)
Key(键)
Del 语法:DEL Key [key ...] 删除给定的一个或者多个key 不存在的key会被忽略。
返回值: 被删粗key的数量# 删除单个 key
redis> SET name huangz
OK redis> DEL name
(integer) 1 # 删除一个不存在的 key redis> EXISTS phone
(integer) 0 redis> DEL phone # 失败,没有 key 被删除
(integer) 0 # 同时删除多个 key redis> SET name "redis"
OK redis> SET type "key-value store"
OK redis> SET website "redis.com"
OK redis> DEL name type website
(integer) 3 DUMP 用于序列化给定key 并返回被序列化的值 redis>dump key_name
redis>set greeting "hello,dumping world!"
redis>dump greeting
"\x00\x15hello, dumping world!\x06\x00E\xa0Z\x82\xd8r\xc1\xde"
redis>dump not-exists-key
(nil) Exists 检查给定key是否存在
时间复杂度O(1)
返回值 若key存在 返回1,否则返回0.
redis>set db "redis"
ok
redis>exists db
(integer) 1
redis>del db
redis>exists db
(integer) 0
EXPIRE EXPIRE key seconds
为给定key 设置生存时间,当key过期时(生存时间为0 )它会被自动删除。
生存时间可以通过使用 DEL 命令来删除整个key
来移除,或者被 SET 和 GETSET 命令覆写(overwrite),
这意味着,如果一个命令只是修改(alter)一个带生存时间的key
的值而不是用一个新的key
值来代替(replace)它的话,那么生存时间不会被改变。 rename 命令 改名后的key的生存时间和改名前一样。
persist命令 可以在不删除key 情况下 移除key的生存时间,让key重新成为一个持久的key 过期时间精确度 redis2.4版本中 过期时间延迟在1秒内 ---即使key已经过期,但它还是可能在过期一秒之内被访问到。延迟被降低到1毫秒
时间复杂度 O(1)
返回值 设置成功返回1,key不存在或者不能为key设置生存时间时(比如在低于2.13版本的reids中更新key的时间)返回0 redis>set cache_page "www.google.com"
ok
redis> expire cache_page 30 #设置过期时间为30秒
(integer)1
redis>TTL cache_page #查看剩余生存时间
(integer) 23
redis>expire cache_page 3000 #更新过期时间
(integer)1
reids>TTL cache_page
(integer) 2996 EXPIREAT key timestamp expireat的作用和expire 类似 都是用于key 设置生存时间
不同于Expireat 命令接受的时间参数是UNIX 时间戳 时间复杂度 O(1)
返回值 如果生存时间设置成功 返回1
如果key不存在或者没办法设置生存时间 返回0 redis> set cache www.google.com
ok
redis>expirreat cache 1355292000 #这个key将在2012.12.12过期
(interger)1
redis>TTL cache
(interger) 45081860 KEYS
keys pattern 查找所有符合给定模式pattern的key
keys * 匹配数据库中所有key
keys h?llo 匹配hello,hallo 和hxllo等
keys h*llo 匹配hllo 和 heeeello等
keys h[ae]llo 匹配hello 和hallo ,但是不匹配hillo
特殊符号用\隔开 keys 的速度非常快 但在一个大的数据库中使用它仍然可能造成性能问题。如果你需要从一个数据库集中查找特定的key 你最好还是用redis的集合结构set来代替
时间复杂度 O(N)
返回值:符合给定模式的key列表
MIGRATE MIGRATE HOST PORT key destination-db timeout [copy] [replace]
将key 从原子性地当前实例传送到目标实例的指定数据库,一旦传送成功 key保证会出现在目标实例上,而当前实例上的key会被删除
实例:
先启用两个redis实例,一个使用默认的6379端口,一个使用7777端口
用客户端连接6379端口的实例,设置一个键,然后将它迁移到7777端口的实例上:
redis 127.0.0.1:6379>set greeting "Hello from 6379 instance"
ok
redis 127.0.0.1:6379>MIGRATE 127.0.0.1 7777 GREETING 0 1000
OK
redis 127.0.0.1:6379>exists greeting
(integer)0
使用另一个客户端,查看7777端口上的实例:
redis 127.0.0.1:7777>get greeting
Hello from 6379 instance
MOVE move key db
将当前数据库的key移动到给定的数据库db当中
如果当前数据库(源数据库)呵呵给定数据库有相同名字的给定key,或者key不存在于当前数据库,那么move没有任何效果
因此,也可以利用这一特性,将move当作锁原语
返回值 移动成功返回1 失败返回0
# key 存在于当前数据库
redis> SELECT 0 # redis默认使用数据库 0,为了清晰起见,这里再显式指定一次。
OK
redis> SET song "secret base - Zone"
OK
redis> MOVE song 1 # 将 song 移动到数据库 1
(integer) 1
redis> EXISTS song # song 已经被移走
(integer) 0
redis> SELECT 1 # 使用数据库 1
OK
redis:1> EXISTS song # 证实 song 被移到了数据库 1 (注意命令提示符变成了"redis:1",表明正在使用数据库 1)
(integer) 1
# 当 key 不存在的时候
redis:1> EXISTS fake_key
(integer) 0
redis:1> MOVE fake_key 0 # 试图从数据库 1 移动一个不存在的 key 到数据库 0,失败
(integer) 0
redis:1> select 0 # 使用数据库0
OK
redis> EXISTS fake_key # 证实 fake_key 不存在
(integer) 0
# 当源数据库和目标数据库有相同的 key 时
redis> SELECT 0 # 使用数据库0
OK
redis> SET favorite_fruit "banana"
OK
redis> SELECT 1 # 使用数据库1
OK
redis:1> SET favorite_fruit "apple"
OK
redis:1> SELECT 0 # 使用数据库0,并试图将 favorite_fruit 移动到数据库 1
OK
redis> MOVE favorite_fruit 1 # 因为两个数据库有相同的 key,MOVE 失败
(integer) 0
redis> GET favorite_fruit # 数据库 0 的 favorite_fruit 没变
"banana"
redis> SELECT 1
OK
redis:1> GET favorite_fruit # 数据库 1 的 favorite_fruit 也是
"apple"
OBJECT OBJECT SUBCOMMAND [ARGUMENTS [arguments]]
object命令允许从内部察看给定key的redis对象
object命令有多个子命令
object refcount <key> 返回给定key 引用所存储的值次数。此命令用于排错
object encoding <key> 返回给定key锁存储的值 所使用的内部表示
object IDLETIME <KEY> 返回给定key 自存储依赖的空闲时间(idle,没有被读取也没有被写入),一秒为单位。
对象可以以多种方式编码:
字符串可以被编码为 raw (一般字符串)或 int (为了节约内存,Redis 会将字符串表示的 64 位有符号整数编码为整数来进行储存)。
列表可以被编码为 ziplist 或 linkedlist 。 ziplist 是为节约大小较小的列表空间而作的特殊表示。
集合可以被编码为 intset 或者 hashtable 。 intset 是只储存数字的小集合的特殊表示。
哈希表可以编码为 zipmap 或者 hashtable 。 zipmap 是小哈希表的特殊表示。
有序集合可以被编码为 ziplist 或者 skiplist 格式。 ziplist 用于表示小的有序集合,而 skiplist 则用于表示任何大小的有序集合。
REFCOUNT 和 IDLETIME 返回数字。
ENCODING 返回相应的编码类型
redis> SET game "COD" # 设置一个字符串
OK
redis> OBJECT REFCOUNT game # 只有一个引用
(integer) 1
redis> OBJECT IDLETIME game # 等待一阵。。。然后查看空闲时间
(integer) 90
redis> GET game # 提取game, 让它处于活跃(active)状态
"COD"
redis> OBJECT IDLETIME game # 不再处于空闲状态
(integer) 0
redis> OBJECT ENCODING game # 字符串的编码方式
"raw"
redis> SET big-number 23102930128301091820391092019203810281029831092 # 非常长的数字会被编码为字符串
OK
redis> OBJECT ENCODING big-number
"raw"
redis> SET small-number 12345 # 而短的数字则会被编码为整数
OK
redis> OBJECT ENCODING small-number
"int"
persist persist key 移除给定key的生存时间,将这个key 从易失的 带生存时间key 转换成持久的 一个不带生存时间、永不过期的key
返回值: 当生存时间移除成功时,返回1;
如果key不存在或者key 没有设置生存时间 返回0;
redis>set mykey "hello"
ok
redis>expire mykey 10 # 为key 设置生存时间
integer 1
redis>TTL mykey
integer 10
redis>persist mykey # 移除key的生存时间
integer 1
redis>TTL mykey
integer -1
PEXPIREAT KEY milliseconds-timestamp
返回值 :如果生存时间设置成功,返回1.
当key不存在或者没办法设置生存时间时,返回0
redis> SET mykey "Hello"
OK
redis> PEXPIREAT mykey 1555555555005
(integer) 1
redis> TTL mykey # TTL 返回秒
(integer) 223157079
redis> PTTL mykey # PTTL 返回毫秒
(integer) 223157079318
scan
语法:scan cursor [Match pattern] [count count]
scan 命令及其相关sscan命令 hscan命令和zscan命令都用于增量迭代
scan 命令用于迭代当前数据库中的数据库键
sscan 命令用于迭代集合键中的元素
Hscan 命令用于迭代哈希键中的键值对
zscan 命令用于迭代有序集合中的元素(包括元素成员和元素分值)。
scan命令的基本用法
SCAN 命令是一个基于游标的迭代器(cursor based iterator): SCAN 命令每次被调用之后, 都会向用户返回一个新的游标, 用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游标参数, 以此来延续之前的迭代过程。
当 SCAN 命令的游标参数被设置为 0
时, 服务器将开始一次新的迭代, 而当服务器向用户返回值为 0
的游标时, 表示迭代已结束。
scan 命令的迭代过程示例:
redis 127.0.0.1:6379> scan 0
1) "17"
2) 1) "key:12"
2) "key:8"
3) "key:4"
4) "key:14"
5) "key:16"
6) "key:17"
7) "key:15"
8) "key:10"
9) "key:3"
10) "key:7"
11) "key:1"
redis 127.0.0.1:6379> scan 17
1) "0"
2) 1) "key:5"
2) "key:18"
3) "key:0"
4) "key:2"
5) "key:19"
6) "key:13"
7) "key:6"
8) "key:9"
9) "key:11"
在上面这个例子中, 第一次迭代使用 0 作为游标, 表示开始一次新的迭代。
第二次迭代使用的是第一次迭代时返回的游标, 也即是命令回复第一个元素的值 —— 17 。
从上面的示例可以看到, SCAN 命令的回复是一个包含两个元素的数组, 第一个数组元素是用于进行下一次迭代的新游标, 而第二个数组元素则是一个数组, 这个数组中包含了所有被迭代的元素。
在第二次调用 SCAN 命令时, 命令返回了游标 0 , 这表示迭代已经结束, 整个数据集(collection)已经被完整遍历过了。
以 0 作为游标开始一次新的迭代, 一直调用 SCAN 命令, 直到命令返回游标 0 , 我们称这个过程为一次完整遍历(full iteration)
redis --------- 使用命令(每天一个)的更多相关文章
- redis键命令
1.ping命令用于检测redis是否启动 成功返回pong表示链接成功 2.在远程redis服务上执行命令 Redis-cli -h host -p port -a password 如果是连接本机 ...
- Redis常用命令
Redis常用命令Redis提供了丰富的命令对数据库和各种数据类型进行操作,这些命令可以再Linux终端使用.1.键值相关命令2.服务器相关命令 一.键值相关命令 1.get get 键值 当 key ...
- Redis常用命令入门5:有序集合类型
有序集合类型 上节我们一起学习了集合类型,感受到了redis的强大.现在我们接着学Redis的最后一个类型——有序集合类型. 有序集合类型,大家从名字上应该就可以知道,实际上就是在集合类型上加了个有序 ...
- Redis常用命令入门1:字符串类型命令
Redis总共有五种数据类型,在学习的时候,一定要开一个redis-cli程序,边看边练,提高效率. 一.最简单的命令 1.获得符合规则的键名列表 keys * 这里的*号,是指列出所有的键,同时*号 ...
- 第2讲 Redis常用命令与高级应用
目录 一.redis数据类型 5. sorted sets类型和操作 二.Redis常用命令 1.键值相关命令 2.服务器相关命令 三. redis高级应用 1. 给redis服务器设置密码 2.持久 ...
- redis shell命令大全
redis shell命令大全(转自http://blog.mkfree.com/posts/5105432f975ad0eb7d135964) 作者:oyhk 2013-1-28 3:11:35 ...
- Redis Key 命令
Redis Key 命令 del key1 key2 - keyn 删除键为key1,key2-keyn,空格分隔. persist key 移除给定 key 的生存时间,将这个 key ...
- Redis 笔记与总结5 Redis 常用命令之 键值命令 和 服务器命令 && 高级应用之 安全性 和 主从复制
Redis 提供了丰富的命令对数据库和各种数据库类型进行操作,这些命令可以在 Linux 终端使用. 1. 键值相关命令: 2. 服务器相关命令 键值相关命令 ① keys 命令 返回满足给定 pat ...
- Redis常用命令速查 02_转
一.Key Key命令速查: 命令 说明 DEL 删除给定的一个或多个 key,不存在的 key 会被忽略,返回值:被删除 key 的数量 DUMP 序列化给定 key,返回被序列化的值,使用 RES ...
随机推荐
- [javase学习笔记]-7.7 thiskeyword的细节与应用
这一节我们接着上一节来继续学习thiskeyword. 我们之前在7.5节中的构造函数应注意的细节中提到过一个细节就是构造函数能够调用一般函数,但一般函数不能直接调用构造函数.可是我们没有深究构造函数 ...
- 【MVC框架】——View和Controller之间的传值
在MVC中,Controller运行一个能够说是路由功能.它通过View传过来的数据,来决定应该调用哪一个Model,相同会把Model处理完的数据传给View,所以就总是涉及到Controller和 ...
- BNU 13064 Dice (I) 前缀和优化DP
Dice (I) You have N dices; each of them has K faces numbered from 1 to K. Now you have arranged th ...
- 数据库html 数据的分句
Python 中文分句 - CSDN博客 https://blog.csdn.net/laoyaotask/article/details/9260263 # 设置分句的标志符号:可以根据实际需要进行 ...
- vim插件ctags的安装和使用【转】
本文转载自:http://blog.csdn.net/g_brightboy/article/details/16830395 [ctags功能]: 为源码的变量/对象.结构体/类.函数/接口.宏等产 ...
- [BZOJ 2199] 奶牛议会
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2199 [算法] 2-SAT [代码] #include<bits/stdc++ ...
- 【WIP】Bootstrap 基础
创建: 2017/09/28 更新: 2017/10/14 标题加上[WIP]
- E20170926-mk
validation n. 确认; proposal n. 建议; 提议; 求婚; 〈美〉投标; teaser n. 戏弄者,喜欢戏弄别人的人; 棘手的问题; batch n. 一批; 一 ...
- [App Store Connect帮助]三、管理 App 和版本(6.2)转让 App:App 转让条件
App 必须满足以下条件才可转让: 转让者和接收者的帐户均不处于待处理或变更状态,且双方均已接受“协议.税务和银行业务”部分中最新版本的转让协议 该 App 的任何版本都不能使用 iCloud 权限 ...
- [App Store Connect帮助]一、 App Store Connect 使用入门(3)首页概述
从首页可以访问 App Store Connect 的各个部分.您仅能访问每个部分中与您的用户职能相关联的功能. [提示]通过点按任何页面顶部的“App Store Connect”,您可以随时返回 ...