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. 其实 ...
随机推荐
- poj 2195(KM求最小权匹配)
题目链接:http://poj.org/problem?id=2195 思路:我们都知道KM使用来求最大权匹配的,但如果要求最小权匹配,只需把图中的权值改为负值,求一次KM,然后权值和取反即可. ht ...
- Nginx模块系列之auth_basic模块
1.1 介绍 ngx_http_auth_basic_module模块实现让访问着,只有输入正确的用户密码才允许访问web内容.web上的一些内容不想被其他人知道,但是又想让部分人看到.nginx的h ...
- PHPCMS 前台移用地区联动数据
在PHPCMS中,有时候需要建立模型有地区联动,这个联动数据在这前台调用显示呢?今天清源就给大家介绍一下! 地区联动菜单的缓存文件是 caches\caches_linkage\caches_dat ...
- Android开发:《Gradle Recipes for Android》阅读笔记1.6——使用android studio添加依赖
有经验的gradle开发者习惯直接编辑build.gradle文件,但是IDE没有提供许多代码提示.IDE提供了一个可视的界面显示配置内容. 点击像文件夹一样的图标可以看到project struct ...
- X明X源面试题《一》
本文转载自zhangkang 今天去明源面试,面试题目如下 1 有两张表 A 学生表 ID Name age 1 李1 ...
- 解决java.lang.NoClassDefFoundError错误
昨天在开发过程中,导入同事的一个服务到本地,首先从git上把项目拉下来,然后使用maven导入eclipse,然后build. build的过程中在项目的一个测试类里面报错 java.lang.NoC ...
- Eclipse: Android Device Chooser - Unknown Target
公司最近所有的项目都使用到了Android开发手机(或PDA)应用.所需要的Android开发技术并不是非常复杂,因为我们的底层方法全部使用WebServcie写好了,做Android开发的人员只需要 ...
- EF 批量更新删除(linq篇)
刚开始用EF很多东西都不会用,事后想想都很简单的东西总是用很麻烦的方式实现 1: EF的联合查询 inner join 很久很久以前我是这么写一个列表展示的,其中有两个字段Contractor和M ...
- 【BZOJ2819】Nim 树状数组+LCA
[BZOJ2819]Nim Description 著名游戏设计师vfleaking,最近迷上了Nim.普通的Nim游戏为:两个人进行游戏,N堆石子,每回合可以取其中某一堆的任意多个,可以取完,但不可 ...
- 1366 贫富差距(floyed)
1366 贫富差距 题目来源: TopCoder 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 一个国家有N个公民,标记为0,1,2,...,N-1,每个公民有一 ...