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 )它会被自动删除。
- 时间复杂度 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 ...
随机推荐
- [Algorithm] Determine if two strings are an anagram
The anagram test is commonly used to demonstrate how an naive implementation can perform significant ...
- WPF 有趣的动画效果
WPF 有趣的动画效果 这一次我要呈上一个简单的文章,关于给你的WPF apps加入美丽的光线动画,可是我对动画这东西可能有点入迷了. 实际上.我对动画如此的入迷,以至 ...
- Unity5.1 新的网络引擎UNET(十五) Networking 引用--中
孙广东 2015.7.21 本节提供了与网络系统一起使用的组件的具体信息. 3.NetworkClient NetworkClient 是一个 HLAPI 类,管理网络连接到服务器 - - 相应着 U ...
- ViewPager中View的复用
代码例如以下: public class MyViewPagerAdapter extends PagerAdapter { //显示的数据 private List<DataBean> ...
- Js通用验证
//-----------------------------------------------------js 验证封装 zhy2014-07-10------------------------ ...
- leetcode题解||Palindrome Number问题
problem: Determine whether an integer is a palindrome. Do this without extra space. click to show sp ...
- Linux对外连接port数限制
左右时,開始大量抛例如以下异常: java.net.BindException:Cannot assign requested address atsun.nio.ch.Net.connect0(Na ...
- UITextView获取光标位置
UITextRange *range = textView.selectedTextRange; //光标位置 CGRect rect = [textView caretRectForPositio ...
- changing permissions of Read-only file system in linux
up vote 2 down vote favorite 1 i use this command to make a bootable flash disk of linux mint sudo ...
- poj1201 Intervals——差分约束
题目:http://poj.org/problem?id=1201 差分约束裸题: 设 s[i] 表示到 i 选了数的个数前缀和: 根据题意,可以建立以下三个限制关系: s[bi] >= s[a ...