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. 其实 ...
随机推荐
- python __new__ __init__ __del__
1.python实例化顺序是.__new__ -->__init__ --> __del__ 2.如果重写new没return,就实例化不成功
- Win7机器上安装Ubuntu 14.0.4
折腾了两天,分享一下经历. 我须要在已经安装了win7的机器上安装Ubuntu 14.0.4 (两者共存),研究下来有例如以下几种方案, 都折腾了一遍.分享一下经验: 方式1: wubi.exe, 把 ...
- Redis 安装成windows服务- 一主二从三哨兵,sentinel安装为Windows服务
这里只做记录说明 Redis的主从配置网上很多文章,百度一大堆,安装流程应该都可以配置通.我使用的这篇文章 https://blog.csdn.net/u010648555/article/detai ...
- Linq to SQL 语法查询(子查询 & in操作 & join )
var 子查询 = from c in ctx.Customers where (from o in ctx.Ord ...
- linux驱动移植问题点
1.I2C地址是否和其它IC冲突.通过改地址解决 ——通常,以下三种情况的log表现相同:1.ic没连接到主板:2.i2c地址错误:3.该器件I2C地址与同组其它器件冲突 2.I2C通信是否受到其它s ...
- Charles常用设置
一.软件说明 Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析. 二.mock数据 场景说明: 使用步骤: 1.保存待测试 ...
- Django项目笔记:sessions处理以及复杂对象序列化
前言:一点题外话 我发现,不更新博客的时候,不是非常忙,就是效率非常低.最近没怎么更新博客,原因是第二种= =.惭愧惭愧. 今天效率出奇的高,一天时间把PassNote后端的接口全部写完了,Djang ...
- 转:: 刺鸟:用python来开发webgame服务端(3)
来源:http://ciniao.me/article.php?id=11 --------------- 刺鸟原创文章,转载请注明出处 在之前的准备工作中,我们已经建立了一个socket服务器 ...
- Android开发:《Gradle Recipes for Android》阅读笔记(翻译)4.1——编写自己的任务
问题: 你想用自己的任务定制gradle的构建过程. 解决方案: 在gradle的build文件里面增加task元素.用Android插件支持的extra属性使得开发更容易. 讨论: Gradle的D ...
- (八)solr7实现搜索框的自动提示并统计词频
solr7实现搜索框的自动提示并统计词频 1:用solr 的suggest组件,统计词频相对麻烦. 2:用TermsComponent,自带词频统计功能. Terms组件提供访问索引项的字段和每个词 ...