redis 第二篇 系统命令简介 上
一、系统级命令(不归属任何一个数据结构)
从keys命令说起
1、 可以模式匹配 也就是可以用正则表达式的方式来匹配
格式为KEYS pattern
glob风格通配符规则
? 匹配一个字符
*匹配任意个字符(包括0个)
[] 匹配括号间的任一个字符,可以使用”-”代表一个范围如a[b-d]可以匹配“ab”,”ac”,”ad”
\x 匹配字符x,用于转义符号,如果要匹配”?”就需要使用\?
set 设置
get获取
如下使用场景:
产品的缓存 product+”.”+....;
订单的缓存: order+”.”+...;
KEYS * 找到所有的key
利用*
127.0.0.1:6379> flushdb 清空数据库
OK
127.0.0.1:6379> set name pyrene
OK
127.0.0.1:6379> set nbme pyrene
OK
127.0.0.1:6379> keys *
1) "nbme"
2) "name"
127.0.0.1:6379> keys n?me
1) "nbme"
2) "name"
2、 判断一个建是否存在
EXISTS key
如果键存在则返回整数类型1,否则返回0
3、 删除键
DEL key [key...]
可以删除一个或者多个键,返回值为删除键的个数
127.0.0.1:6379> del name nbme
(integer) 2
127.0.0.1:6379> keys *
(empty list or set)
获取键值的数据类型
TYPE key
判断当前的键是什么类型,返回值可能是string、hash(散列类型)、list、set、zset
127.0.0.1:> hset collections key value
(integer)
127.0.0.1:> type collections
hash
从当前数据库中随机(不删除)返回一个key
RANDMKEY
返回值
当数据库不为空的时候返回1
当数据库为空的时候返回nil
127.0.0.1:> randomkey
"name"
127.0.0.1:> randomkey
"nbme"
127.0.0.1:> randomkey
"name"
127.0.0.1:> randomkey
"fruits"
127.0.0.1:> randomkey
"collections"
127.0.0.1:> randomkey
"nbme"
127.0.0.1:> randomkey
"collections"
127.0.0.1:> randomkey
"fruits"
设置过期时间
EXPIRE key seconds 【以秒为单位】
如果要做缓存就要做过期时间
返回值:
设置成功返回值为1
当 key 不存在或者不能为 key 设置生存时间时(比如在低于 2.1.3 版本的 Redis 中你尝试更新 key 的生存时间),返回 0
127.0.0.1:> expire name 给name这个键设置5秒
(integer)
127.0.0.1:> get name
"pyrene"
127.0.0.1:> get name
"pyrene"
127.0.0.1:> get name
(nil)
PEXPIRE key milliseconds 【毫秒为单位】
这个命令和 EXPIRE 命令的作用类似,但是它以毫秒为单位设置 key 的生存时间,而不像 EXPIRE 命令那样,以秒为单位。
127.0.0.1:> set name pyrene
OK
127.0.0.1:> get name
"pyrene"
127.0.0.1:> pexpire name
(integer)
127.0.0.1:> get name
"pyrene"
127.0.0.1:> get name
(nil)
以某个时间点为设置过期时间
EXPIREAT key timestap
返回值:
如果设置成功 返回1
如果key不存在或者没办法设置生存时间返回0
应用场景
如每晚10点清空集群缓存
pexpireat 【微妙】
以微妙时间点为过期时间
TTL 查看key还有多长的存活时间(time to live) [秒为单位]
返回值
当key不存在的时候,返回-2
当key存在但是没有设置生存时间的时候返回-1
否则以秒为单位,返回key的剩余生存时间
127.0.0.1:6379> set name pyrene
OK
127.0.0.1:6379> expire name 20
(integer) 1
127.0.0.1:6379> ttl name
(integer) 16
127.0.0.1:6379> ttl name
(integer) 13
127.0.0.1:6379> ttl name
(integer) 11
127.0.0.1:6379> ttl name
(integer) 8
127.0.0.1:6379> ttl name
(integer) 3
127.0.0.1:6379> ttl name
(integer) -2
与ttl对应的就是pttl,唯一不一样的是以【毫秒为单位】
127.0.0.1:6379> set name pyrene
OK
127.0.0.1:6379> get name
"pyrene"
127.0.0.1:6379> expire name 20
(integer) 1
127.0.0.1:6379> pttl name
(integer) 16577
127.0.0.1:6379> pttl name
(integer) 10588
127.0.0.1:6379> pttl name
(integer) 474
127.0.0.1:6379> pttl name
(integer) -2
redis 第二篇 系统命令简介 上的更多相关文章
- LWJGL3的内存管理,第二篇,栈上分配
LWJGL3的内存管理,第二篇,栈上分配 简介 为了讨论LWJGL在内存分配方面的设计,本文将作为该系列随笔中的第二篇,用来讨论在栈上进行内存分配的策略,该策略在 LWJGL3 中体现为以 Memor ...
- 15天玩转redis —— 第二篇 基础的字符串类型
我们都知道redis是采用C语言开发,那么在C语言中表示string都是采用char[]数组的,然后你可能会想,那还不简单,当我执行如下命令,肯定是直 接塞给char[]数组的. 如果你真的这么想的话 ...
- Redis第二篇(Redis基本命令)
-x 从标准输入读取一个参数 such as: echo –en “shaw” |./redis-cli –x setname == set name shaw -r 重复执行一个命令 ...
- 【原】Spring整合Redis(第二篇)—SDR环境搭建具体步骤
[环境参数] Spring版本:4.2.6.RELEASESpring-Data-Redis版本:1.7.2.RELEASE Redis版本:redis-2.4.5-win32-win64 [简要说明 ...
- javascript立即调用的函数表达式N种写法(第二篇)
原文:javascript立即调用的函数表达式N种写法(第二篇) 上一篇博客我谈到将函数声明转换为函数表达式最常见的一种写法是:通过括号()将匿名函数声明转换为函数表达式即(function(){}) ...
- JDFS:一款分布式文件管理实用程序第二篇(更新升级、解决一些bug)
一 前言 本文是<JDFS:一款分布式文件管理实用程序>系列博客的第二篇,在上一篇博客中,笔者向读者展示了JDFS的核心功能部分,包括:服务端与客户端部分的上传.下载功能的实现,epoll ...
- 【ABAP系列】SAP ABAP7.40新语法简介第二篇
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP7.40新语法简 ...
- Redis Cluster搭建方法简介22211111
Redis Cluster搭建方法简介 (2013-05-29 17:08:57) 转载▼ Redis Cluster即Redis的分布式版本,将是Redis继支持Lua脚本之后的又一重磅 ...
- iOS开发UI篇—CALayer简介
iOS开发UI篇—CALayer简介 一.简单介绍 在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮.一个文本标签.一个文本输入框.一个图标等等,这些都是UIView. 其实 ...
随机推荐
- C++数组类型与函数类型
之所以将C++的数组类型与函数类型拿到一块说,是因为两者在很多地方都一样. 首先,声明形式上类似: 数组类型: type [num] ...
- .net 连接Redis
Redis安装 公司业务需要,弄了个类似于消息队列的东西,由客户端一直轮询取得信息.之前一直是走表的,但是效率以对表的使用都太过频繁,想试着用一下Redis,看看效率怎么样. 首先是安装Redis,这 ...
- C# 持续序列化对象追加到文件的方法
最近有个需求,将内存和帧数数据序列化到二进制文件.为了节省内存,采用了100个对象的数组,每次存满就序列化到文件,然后归零继续存,以追加的性式继续序列化到原有文件. 这样相当于多个数组对象存在了同一个 ...
- 远程连接windows时剪贴板失效解决方法
1:打开任务管理器2:找到结束进程rdpclip,找不到可以不管.3:手工新建任务里输入rdpclip,运行即可.
- dva解读1
1.首先定义一个app对象实现dva const app = dva({ history: createHistory(), }); // 2. Plugins app.use(createLoadi ...
- Android 百度语音合成集成
一.环境配置: 下载资料:http://ai.baidu.com/sdk 官方视频讲解:http://ai.baidu.com/support/video 接入指南:http://ai.baidu.c ...
- poj1742
Coins Time Limit: 3000MS Memory Limit: 30000K Total Submissions: 33998 Accepted: 11554 Descripti ...
- Socket_leaks open socket #5024 left in connection
open socket left in connection http://mailman.nginx.org/pipermail/nginx/2012-September/035627.html D ...
- 阿里云 如何减少备份使用量? mysql数据库的完整备份、差异备份、增量备份
RDS for MySQL备份.SQL审计容量相关问题_MYSQL使用_技术运维问题_云数据库 RDS 版-阿里云 https://help.aliyun.com/knowledge_detail/4 ...
- Centos7安装dubbo管理控制台
1.下载dubbo源代码 wget https://github.com/apache/incubator-dubbo/archive/2.5.x.zip 2.进入dubbo-admin目录下 cd ...