首页 > 数据库 >redis 5 命令大全

redis 5 命令大全

时间:2022-12-26 16:12:56浏览次数:68  
标签:127.0 6379 0.1 redis Redis 命令 大全 客户端

从网站迁移过来,格式有些问题

get

  • 获取redis 键的值
  • get key
  • Laravel: $result=Redis::get("key");

set  

  • 设置redis 键的值
  • set key value

更多用法:

ex seconds  给设置的键顺便加上多少秒过期时间 和setex命令功能一样

例子:

127.0.0.1:6379> ttl java
(integer) 478
127.0.0.1:6379> set php 123 ex 100
OK
127.0.0.1:6379> ttl php
(integer) 97

 px milliseconds 给设置的键顺便加上毫秒的过期时间

127.0.0.1:6379> set php 123 px 30000
OK
127.0.0.1:6379> ttl php
(integer) 27

nx: 键必须是不存在或者过期了才能设置成功(如何已经存在这个键,那就设置不成功)

127.0.0.1:6379> set php 123 ex 100
OK
127.0.0.1:6379> set php 123 ex 100 nx
(nil)

xx: 键必须是存在的情况下才能设置成功

127.0.0.1:6379> set php 123 ex 100
OK
127.0.0.1:6379> set php 444 ex 100 xx
OK
127.0.0.1:6379> get php
"444"

 

客户端使用:

PHP:Pedis

$result=Redis::set("java","php","ex","100","nx");

 

del

  • 删除某个键
  • del key

dbsize

  • 获取redis键的总数
  • dbsize
  • 实现原理:并不是便利,而是直接获取内置的count

    对于过期的键,也不会立刻就获取到准确的数据,

    比如说  设置了1000个键 30秒后过期,

    30秒钟之后dbsize 获取的数字只会慢慢减少, 所以也依赖 redis的定时删除机制,

    而且设置键过期时间不要都设置成一样的时间,要随机的秒数,防止清除过期键的时候发生阻塞

  • Laravel中使用 
    Redis::dbsize();

 

exists

  • 检测这个键名为php的是否存在
  • exists  php

expireat

 

ttl

  • 查看php这个键还有多少秒过期
  • ttl  php

type

  • 查看php这个键是什么类型
  • type php

incr

  • 自增键为php的值,默认自增1,第二个参数是自增的值
  • incr php 或者  incr php 2
  • 返回的都是自增完成之后的值

     

    如果键不存在的话,自动+1  返回1

    如果是incr的键的值是字符串的话会直接报错

    相似命令

    自减    自减指定个数   自增   自增指定个数  自增浮点数

    但是没有自减浮点数

     

    客户端使用

    PHP:pedis中使用

    Redis::incr("post:1:total");

     

setex

  • 设置php的值为fpm过期时间为60秒
  • setex php  60 fpm
  • 可以实现分布式锁

    redis实现分布式排它锁

     根据这个过期时间自动解锁

decr

append

  • 往键为java的值中追加字符串jvm
  • append java  jvm
  • 如果追加了int类型的值那么就会自动转成string了

     

    客户端使用

    PHP:pedis

    $result=Redis::append("php","sss");

    会返回追加完之后字符串的长度

 

strlen

  • strlen java统计键名为java的值的长度
  • strlen java
  • 客户端使用

    PHP:pedis

    Redis::set("php","我的天");
    $result=Redis::strlen("php");

    中文的话一个字的长度为3,所以会返回9

 

getset

  • 设置java的值为jvm并且返回设置之前的值
  • getset java jvm
  • 客户端使用

    PHP:pedis

    $result=Redis::getset("php","我的天");

     

setrange

  • 原来java的值是jvm,现在设置字符串下标1的值变为p,最后结果就是jpm
  • setrange java 1 p
  • 客户端使用

    PHP:pedis

    127.0.0.1:6379> set php abcd
    OK
    127.0.0.1:6379> setrange php 2 g
    (integer) 4
    127.0.0.1:6379> get php
    "abgd"
    参数说明
    setrange key offeset value

     

object encoding

  • 先设置一个键num:key 值为123,然后查看编码格式会输出int
  • set num:key 123
    object encodibg num:key

 

hset

  • 如果键不存在会自动创建,创建一个student 哈希表,并且设置键wl的值为123
  • hset key field  value

    hset student wl 123

  • 如果键不存在则会自动创建,如果键已经存在则会覆盖

     

    客户端使用

    PHP:pedis

    $result=Redis::hset("student","wl","123");

     

hget

  • 获取哈西表student中键名为wl的值
  • hget key  field
    hget student wl
  • 客户端使用

    PHP:pedis

    $result=Redis::hget("php:hash","wwww");

    若想获取多个键 使用 hmget

 

hdel

  • 删除哈西表student中键名为wl和xiaoming
  • hdel student wl  xiaoming
  • 删除一个多个键

    客户端使用

    PHP:pedis

    $result=Redis::del("php:hash","wl","wl1","wl2");

    返回的值就是删除成功的个数

hlen

  • 获取哈西表student中有多少个键
  • hlen student
  • 只能获取哈希表,获取其他类型会报错

     

    客户端使用

    PHP:pedis

    $result=Redis::hlen("php:hash");

     

hmset

  • 批量设置student哈希表的键和值
  • hmset student wl 万隆 xiaoming 小明

 

hmget

  • 批量获取student哈希表的某些键的值
  • hmget student wl xiaoming
  • 客户端使用

    PHP:pedis

    $result=Redis::hmget("php:hash","wl","xiaoming");

     

hexists

  • 判断student哈希表中有没有wl这个键
  • hexists student wl
  • 客户端使用

    PHP:pedis

    $result=Redis::hexists("php:hash","wl");

    如果存在则返回1

 

hkeys

  • 获取student哈希表中所有的键
  • hkeys student
  • 客户端使用

    PHP:pedis

    $result=Redis::hkeys("student");

    相似命令

     

  • 获取所有值

 

hvals

  • 获取student的所有值
  • hvals student
  • 不建议使用,可能值太多会导致阻塞

    客户端使用

    PHP:pedis

    $result=Redis::hvals("php:hash");

    相似命令

    获取所有键

hgetall

  • 获取student的所有的键和值,先输出键再输出值
  • hgetall student
  • 自己测试和小打小闹可以用这个命令,生产环境非常不建议用

     

hstrlen

  • 获取student中wl值的长度
  • hstrlen student wl
  • 版本要求

    >= Redis3.2 

     

    客户端使用

    PHP:pedis

    $result=Redis::hstrlen("student","wl");

     

rpush

  • 往列表work的右边加入一条或多条记录
  • rpush work 写bug
  • 命令

    rpush stu:list wl xiaoming xiaohong

     

    客户端使用

    $result=Redis::rpush("stu:list","wl","xiaoming","xiaohong");

    会返回添加完之后的列表的个数

     

    使用场景

    laravel 框架中自带的队列工具就是使用的redis list, 可以把进行的操作push到list中,再使用 lpop 弹出来,如果要操作的内容过于复杂可以把要操作的内容存入Hash中,然后在List中只存键就可以了

     

    相似命令

    向左边插入

     

lrange

  • 获取列表work的从左边开始数第0个到2的值 
  • lrange key   startd  end
  • lrange work 0 2
  • 获取所有值

    lrange work 0 -1  

    客户端使用

    PHP:Pedis

    $result=Redis::lrange("stu:list","0","-1");

     

lpush

  • 往列表work的左边插入一条记录,记录的值只能是string或者int
  • lpush work 改bug
  • 命令

    lpush stu:list wl xiaoming xiaohong

     

    客户端使用

    $result=Redis::lpush("stu:list","wl","xiaoming","xiaohong");

    会返回添加完之后的列表的个数

     

    相似命令

    向右边插入

 

lindex

  • 获取列表work的第一条记录
  • lindex work 0
  • 客户端使用

    PHP:pedis

    $result=Redis::lindex("stu:list","1");

     

llen

  • 获取列表work的长度
  • llen work
  • 客户端使用

    PHP:pedis

    $result=Redis::llen("stu:list");

     

     

lpop

  • 获取列表work的左边的第一个值,并且删除
  • lpop work
  • 从左边开始按顺序弹出第一个元素,并且会删除掉

     

    客户端使用

    PHP:pedis

    $result=Redis::lpop("stu:list");

    会返回弹出的值

rpop

  • 获取列表work的右边的第一个值,并且删除
  • rpop work
  • 从右边开始按顺序弹出第一个元素,并且会删除掉

     

    客户端使用

    PHP:pedis

    $result=Redis::rpop("stu:list");

     

lset

  • 修改列表中第0个元素的值为再写bug
  • lset work 0 再写bug
  • 前提是这个下标必须有值,不然修改一个不存在的下标的值会报错

      ERR index out of range 

     

    客户端使用

    PHP:pedis

    $result=Redis::lset("stu:list",2,"写bug");

     

blpop

  • 和lpop功能类似,只是如果列表为空的话就会一直阻塞,100是阻塞的秒数。当然这个阻塞不会影响其他命令的操作
  • blpop work 100
  • 具体介绍看  brpop   都差不多

 

brpop

  • 和rpop功能类似,只是如果列表为空的话就会一直阻塞,200是阻塞的秒数。当然这个阻塞不会影响其他命令的操作
  • brpop work 200
  • 可以添加多个key 比如

    bropo register_work email_work  200

    越往前的列表如果先出现数据就会先弹前面的,这样就可以模拟任务优先级

    实际中:一个发送注册邮件的队列和日志迁移的队列,当有新的注册的时候就要优先执行发送邮件队列

     

    客户端操作

    PHP:pedis

    $result=Redis::brpop("stu:list1",200);
    
    dd($result);

    返回值

    array:2 [
      0 => "stu:list1"
      1 => "java"
    ]

     

    如果列表中没有值的话,会一直等着,第二个参数就是等待的秒数 ,200秒后还没有值就会退出了,

    PHP非cli的话要设置脚本最大运行时常

     

    使用场景

    模拟一个队列

    PHP代码

    while (true){
           $result=Redis::brpop("stu:list1",200);
    
           if (!isset($result[1])){
                continue;
           }
           if ($result[1]=="send_email"){
                echo "收到发生邮件的任务";
           }else{
                echo $result[1];
           }
    }

    然后

    lpush stu:list1 send_email

 

monitor

  • 输出当前执行的所有命令
  • monitor

 

hincrby

  • 自增哈西表student 中wl列的值
  • hincrby student wl

hincrbyfloat

  • 自增哈西表student 中xiaoming列的值
  • hincrbyfloat student xiaoming

 

linsert

  • before是在列表studentlist中找wl,并将pipi插在它前面。而after是插在后头
  • linsert studentlist before wl pipi
    或者
    linsert student after wl pipi
  • 在某个元素之前或者之后插入新的元素,当然会先查找,如果有相同的元素的话,就插入在排在左边的前面或者后面.

    如果没找到要查询的元素会返回-1

     

    客户端使用

    PHP:pedis

    $result=Redis::linsert("studentlist","after","wl","pipi");

    $result=Redis::linsert("studentlist","before","wl","pipi");

     

     

sadd

  • 往集合中添加元素,但是没有重复的数据,添加完成会返回一添加成功的集合个数,如果添加的值在其中则不算
  • sadd resultSet java php
  • 可以理解为是一个没有值的 哈希类型,只有键

     

    客户端使用

    $result=Redis::sadd("stu:set","java","php","net");

    只会返回成功添加的个数,如果值已经存在了则不算

   

 

 

 

 

srem

  • 把元素从集合中删除,会返回删除成功的个数
  • srem resultSet java php
  • 客户端使用

    PHP:pedis

    $result=Redis::srem("stu:set","java","php");

    会返回删除成功的个数

scard

  • 返回集合中列表的个数
  • scard resultSet
  • 客户端使用

    PHP:pedis

    $result=Redis::scard("stu:set");

     

sismember

  • 判断java在不在集合中,如果在就返回1 不在为0
  • sismember resultSet java
  • 客户端使用

    PHP:pedis

    $result=Redis::sismember("stu:set","java");

     

srandmember

  • 随机从集合中找两人,默认找一个人
  • srandmember resultSet 2
  • 随机找出几个元素 但是不会删除

     

    客户端使用

    PHP:pedis

    $result=Redis::srandmember("stu:set","2");

     

spop

  • 随机取出两个元素,默认只取出一个
  • spop resultSet 2
  • 随机拉两个元素出来,不记得看的是哪本书了,这个随机性不是太好

    客户端使用

    PHP:pedis

    $result=Redis::spop("stu:set",2);

     

smembers

  • 返回列表中所有的元素
  • smembers resultSet
  • 客户端使用

    PHP:pedis

    $result=Redis::smembers("stu:set");

     

DEBUG SEGFAULT

  • 能够立刻让redis 崩溃,模拟断电

  • DEBUG SEGFAULT
  • 直接命令行使用吧

ping

  • 发送一个测试,看看服务器是否还活着

  • ping
  •  

echo

  • 输出一些数据,和linux的echo 一个意思

  • echo java
  • Laravel

    dd(Redis::echo("java"));

     

object idletime java

  • 查看java 这个键空闲了多久,就是既没有被查询也没有被修改

  • object idletime
  • Laravel predis

     

    dd(Redis::object("idletime","studeng"));

     

     

slowlog

  • 用来记录查询执行时间的日志系统
  • slowlog
  • 主要用来记录慢查询,和查询超时的吊问题,记录下来的日志是存在内存中的,所以快,但是不持久啊(使用save是无法保存日志的),建议定时读取日志,存到本地

    配置项:   slowlog-log-slower-than 100  查询超过100微秒就记录,1秒=一百万微秒

    建议设置为1毫秒也就是 1000微秒
     

    config get slowlog-log-slower-than

     

    config get slowlog-max-len

     

    查看已经记录了多少条日志

    slowlog len

    查看这些日志

    slowlog get

     

    127.0.0.1:6379> slowlog get
    1) 1) (integer) 53
    2) (integer) 1579424643 //什么时候时间
    3) (integer) 147 //耗时(微秒 1秒=1000毫秒=1000 000 微秒)
    4) 1) "GET" //命令
    2) "aix_cache:aix_category"
    5) "127.0.0.1:33084" //客户端
    6) ""

    清空日志

    slowlog reset

     

     

    客户端使用

    PHP pedis

     

    dd(Redis::slowlog("get"));

     

    dd(Redis::slowlog("len"));

     

     

mset

  • 设置多个键
  • mset java 123 php 456
  • 客户端使用

    PHP:Pedis

    $result=Redis::mset(["java"=>"22","php"=>"22222"]);

     

mget

  • 获取多个键
  • mset java php
  • 只进行了一次网络请求

    如果获取的键不存在的话,会返回一个空值  (nil) 不同的客户端会进行转换

     

    客户端使用

    PHP:Pedis

    $result=Redis::mget(["java","php"]);

     

     

incrby

decrby

  • 自减指定个数
  • decrby php 3
  • 如果键不存在会自动创建,最后会返回-3

    已存在的键不可为字符串

     

    客户端使用

    ​PHP:pedis

    $result=Redis::decrby("post:1:total","3");

     

incrbyfloat

  • 自增浮点数
  • incrbyfloat php3 1.222312323
  • 第三个参数可以为整数或者小数,同样是可以不存在

    redis5 以下版本中会出现以下情况

    127.0.0.1:6379> set post:1:total 1
    OK
    127.0.0.1:6379> incrbyfloat post:1:total 3.11
    "4.109999999999999"

     

    相似命令:

    自减    自减指定个数   自增   自增指定个数  自增浮点数

    客户端使用

    ​PHP:pedis

    $result=Redis::incrbyfloat("post:1:total","3.11");

     

     

getrange

  • 获取部分字符串
  • getrange php 0 2
  • 客户端使用

    PHP:pedis

    $result=Redis::getrange("php","0","3");

     

    参数说明

    getrange key start end

     

lrem

  • 删除list中的元素
  • lrem stu:list 3 www
  • 命令介绍

    lrem key count value  

     

    count 是删除多少个元素,value 是删除名字为这些的元素(不支持模糊匹配)

    如果有多个相同的元素

    当count>0 的时候 从左往右删除,当count<0 从右往左删除 count==0 删除所有的

     

    客户端使用

    PHP:pedis

    $result=Redis::lrem("stu:list","2","www");

     

     

ltrim

  • 删除元素
  • ltrim stu:list 1 3
  • 除了下标1到3之间的元素,其他的全部删除

     

    客户端使用

    PHP:pedis

    $result=Redis::ltrim("stu:list","1","3");

     

sinter

  • 求出多个集合的交集
  • sinter key [key...]
  • 交集的意思就是   你有的我也有

    使用场景

    有多个兴趣爱好标签,这些标签中存储的都是用户id, 可以求出同时细化打篮球和打乒乓球的人,(但是只能是针对用户量小的情况下,多了就会出现bigkey了)

     

     命令介绍

    sinter key1  key2

     

    客户端使用

    PHP:pedis

     

    $result=Redis::sinter("stu:set","stu:set1");

     

    相似命令

    把计算的交接结果保存

sunion

  • 求出多个集合的并集
  • sunion stu:set1 stu:set2
  • 并集就是你的和我的,合到一起,把重复的去除掉

     

    客户端使用

    PHP:pedis

    $result=Redis::sunion("stu:set","stu:set1");

    相似命令

    将并集运算结果保存到新集合

sdiff

  • 求出多个集合的差集
  • sdiff key1 key2
  • 差集就是你有的我没有,我没有的你有

    客户端使用

    PHP:pedis

    $result=Redis::sdiff("stu:set","stu:set1");

    标签:127.0,6379,0.1,redis,Redis,命令,大全,客户端
    From: https://www.cnblogs.com/wlphp/p/17005857.html

相关文章

  • k8s运行redis
    redis-persistentvolume.yaml---apiVersion:v1kind:PersistentVolumemetadata:name:redis-datadir-pv-1namespace:wgs-redisspec:capacity:storage......
  • Redis--数据结构--命令汇总
    Redis--数据结构--命令汇总​​1.String​​​​2.Hash​​​​3.List​​​​4.Set​​​​5.SortedSet​​​​6.其他​​​​6.1获取全部的key​​​​6.2key是......
  • 终于定制出顺手的Obsidian斜杠命令
    wolai、语雀、思源笔记等笔记软件,有一个特别好用的功能,通过斜杠打开快速输入面板,让我们快速输入markdown、插入图片外链、插入文件、插入iframe等,十分方便。但当我使用obs......
  • Linux mv命令格式及功能详解!
    与其它操作系统不同,在Linux系统中大部分操作都可以通过命令来完成,只要我们熟练掌握各种各样的命令,使用linux系统时就会变得游刃有余。那么Linux系统中mv命令的作用是什......
  • Redis 6.0 为什么要引入多线程呢?
    Reactor模式Redis是基于Reactor模式开发了网络事件处理器,这个处理器称为文件事件处理器。组成结构为4个部分:多套接字IO多路复用程序文件事件派发器事件处理器。在这里......
  • 在java中操作redis
    Redis的客户端很多,官方推荐三种:(Jedis,lettuce,Redission)。springdataredis,在SpringBoot项目中还提供了对应的Starter,即Spring-boot-starter-data-redis.Jedis的maven......
  • dd命令的简单学习
    dd命令简介ddCopyafile,convertingandformattingaccordingtotheoperands.dd可以理解为是diskdump磁盘转储的含义他不仅仅可以用于测试磁盘的简要读写速......
  • Redis数据类型
    Redis存储的是key-value结构的数据,其中key是字符串类型,value有5种常用的数据类型字符串string普通字符串(常用)哈希hash适合存储对象列表list按照插入顺序排序,可......
  • 【基础篇】一文带你掌握 Redis
    一、摘要谈起Redis,相信大家都不会陌生,做过云平台开发的程序员多多少少会接触到它,Redis英文全称:RemoteDictionaryServer,也被称之为远程字典服务。从官方的定义看,Redis......
  • python 多版本查看与命令用法
    1.windows查看电脑上是否有多个版本 如果python2能查到,那么用命令时1、pip是python的包管理工具,pip和pip3版本不同,都位于Scripts\目录下:2、如果系统中只安装了Python......