一、系统级命令(不归属任何一个数据结构)

从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 第二篇 系统命令简介 上的更多相关文章

  1. LWJGL3的内存管理,第二篇,栈上分配

    LWJGL3的内存管理,第二篇,栈上分配 简介 为了讨论LWJGL在内存分配方面的设计,本文将作为该系列随笔中的第二篇,用来讨论在栈上进行内存分配的策略,该策略在 LWJGL3 中体现为以 Memor ...

  2. 15天玩转redis —— 第二篇 基础的字符串类型

    我们都知道redis是采用C语言开发,那么在C语言中表示string都是采用char[]数组的,然后你可能会想,那还不简单,当我执行如下命令,肯定是直 接塞给char[]数组的. 如果你真的这么想的话 ...

  3. Redis第二篇(Redis基本命令)

    -x     从标准输入读取一个参数 such as: echo –en “shaw” |./redis-cli –x setname == set name shaw -r     重复执行一个命令 ...

  4. 【原】Spring整合Redis(第二篇)—SDR环境搭建具体步骤

    [环境参数] Spring版本:4.2.6.RELEASESpring-Data-Redis版本:1.7.2.RELEASE Redis版本:redis-2.4.5-win32-win64 [简要说明 ...

  5. javascript立即调用的函数表达式N种写法(第二篇)

    原文:javascript立即调用的函数表达式N种写法(第二篇) 上一篇博客我谈到将函数声明转换为函数表达式最常见的一种写法是:通过括号()将匿名函数声明转换为函数表达式即(function(){}) ...

  6. JDFS:一款分布式文件管理实用程序第二篇(更新升级、解决一些bug)

    一 前言 本文是<JDFS:一款分布式文件管理实用程序>系列博客的第二篇,在上一篇博客中,笔者向读者展示了JDFS的核心功能部分,包括:服务端与客户端部分的上传.下载功能的实现,epoll ...

  7. 【ABAP系列】SAP ABAP7.40新语法简介第二篇

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP7.40新语法简 ...

  8. Redis Cluster搭建方法简介22211111

    Redis Cluster搭建方法简介 (2013-05-29 17:08:57) 转载▼       Redis Cluster即Redis的分布式版本,将是Redis继支持Lua脚本之后的又一重磅 ...

  9. iOS开发UI篇—CALayer简介

    iOS开发UI篇—CALayer简介   一.简单介绍 在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮.一个文本标签.一个文本输入框.一个图标等等,这些都是UIView. 其实 ...

随机推荐

  1. 目前国际上所用云计算平台IaaS、PaaS、SaaS简介

    随着云计算这个概念越来越为人所熟知,企业对云计算的重视程度也在日趋加深.这不仅是一种潮流,更体现了一种需求——数字化.现代化.科技化的整体需求.如今市场上云计算的运营商更是风起云涌,服务种类更是丰富繁 ...

  2. Word常用操作笔记

    总忘,在这记一下,以下以WPS为例,WORD大同小异,别看网上那些乱写的,就哥这个稳定好使: 1. 在指定页面及其后开始插入页码 2. 修改页码中的总页数 -> 选中总页数的域 -> SH ...

  3. 关于 SQLNET.AUTHENTICATION_SERVICES 验证方式的说明

    今天去客户那里巡检,客户提出为了提高数据库安全性考虑,须要改动sys/systempassword,并通过数据库验证方式来代替默认的操作系统方式,如今我来把这两种验证方式总结一下. 操作系统验证.即通 ...

  4. android自定义View_0——Create a custom view class

    一:创建一个自定义view的原则: 1.符合android的标准 2.能在layout的xml中定义控件属性 3.实现些新功能 4.要兼容android的大多数版本 二:定义一个view的子类 1.可 ...

  5. python多线程爬虫:亚马逊价格

    import re import requests import threading import time from time import ctime,sleep from queue impor ...

  6. Android开发:《Gradle Recipes for Android》阅读笔记1.3

    想命令行执行gradle的构建,可以通过提供的gradle wrapper或者安装gradle. 构建android项目不需要安装gradle,因为android studio已经包含gradle.& ...

  7. 【BZOJ2794】[Poi2012]Cloakroom 离线+背包

    [BZOJ2794][Poi2012]Cloakroom Description 有n件物品,每件物品有三个属性a[i], b[i], c[i] (a[i]<b[i]).再给出q个询问,每个询问 ...

  8. asp.net mvc全局错误处理

    方式一:全局捕获异常 根据错误编码直接跳转到对应静态页面 1,在Global.asax.cs文件中添加错误处理方法Application_Error 代码如下 protected void Appli ...

  9. HTTP headers with the Link header field HTTP协议支持分页(Pagination)操作,在Header中使用 Link 即可

    RFC 5988 - Web Linking  https://tools.ietf.org/html/rfc5988#section-5.1 https://www.zhihu.com/questi ...

  10. Java里的CompareAndSet(CAS)

    ;            if (compareAndSet(current, next))                return next;        }    } 首先可以看到他是通过一 ...