数据库
首页 > 数据库> > 五、redis的常用命令总结和RedisDesktopManager使用

五、redis的常用命令总结和RedisDesktopManager使用

作者:互联网

1、redis常用命令:

1) 启动服务        redis-server.exe redis.windows.conf
2) 启动客户端: redis-cli.exe -h 127.0.0.1 -p 6379
3) redis 选库和对key的操作命令
    3.1)--选择第几个数据库:选择第一个数据库
        select 1
        
    3.2)--将key从数据1移动到数据库0:
        select 1
        move mykey 0

    3.3)--设置键值对:
        set myKey abc
        
        --一次设置多个键值对信息:
        MSET fruit "apple" drink "beer" food "cookies"

    3.4)--取出键值对:
        get myKey    
        
        --随机获取一个key:
        randomkey
        
        --查看数据库内所有key:
        keys  *
        
    3.5)--删除key:
        del myKey    
        备注:如果键被删除成功,命令执行后输出 (integer) 1,否则将输出 (integer) 0
        
        --删除当前数据库所有 key
        flushdb
        
    3.6)--key是否存在
        exists myKey    
        
    3.7)--设置过期时间:(以秒来计算)
        expire myKey 10    
        
        --设置过期时间:(以毫秒计)
        PEXPIRE key milliseconds
        
        --设置过期时间:(以毫秒来计算)
        expireat key timestamp
        备注:expireat 的作用和 EXPIRE 类似,都用于为 key 设置过期时间。 不同在于 expireat 命令接受的时间参数是 UNIX 时间戳(unix timestamp)
        
        --查询key的过期时间: (以秒为单位,返回给定 key 的剩余生存时间(TTL-time to live)
        ttl key
        备注:当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 否则,以毫秒为单位,返回 key 的剩余生存时间。
        
        --查询key的过期时间: (以毫秒为单位返回 key 的剩余的过期时间)
        pttl key
        
        --移除key的过期时间: (移除key的过期时间之后,key将持久保持)
        persist key
        
    3.8)--返回 key 所储存的值的类型
        type mykey        
        
    3.9)--重名令key
        renamenx mykey mynewkey    仅当 mynewkey 不存在时,将 mykey 改名为 mynewkey
        
    3.10)--查看redis版本信息
        info
        
        
    3.11)--序列化给定 key
        DUMP mykey
        DUMP 命令用于序列化给定 key ,并返回被序列化的值。    
   
    3.12)--key模糊搜索:
        *: 通配任意多个字符
        ?: 通配单个字符
        []: 通配括号内的某1个字符

        --查询以m开头的所有key
        keys m*

        --查询以t结尾的所有key
        keys *t

        --查询字符长度为3位的所有key
        keys ???

        --查询以son开始,并且后面有一位字符的key
        keys son?
        
        --查询key是以my开始之后为l或k或者i的所有key的集合
        keys my[lki]*
        查询结果为
        1) "mykey"
        2) "mykey4"
        3) "mykey3"
        4) "myintkey"
        5) "mykey2"
        6) "mylist"
           
  3.13) 配置

  -- 获取所有配置项    config get rdbcompression  获取存储至本地数据库时是否压缩数据
  CONFIG GET *   
        指定存储至本地数据库时是否压缩数据,默认为 yes,Redis 采用 LZF 压缩,如果为了节省 CPU 时间,可以关闭该选项,但会导致数据库文件变的巨大。config get dbfilename 指定本地数据库文件名,默认值为 dump.rdb 
View Code

4) redis 数据类型
    4.1) string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。string 类型的值最大能存储 512MB
    4.2) hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象;Redis 中每个 hash 可以存储 2的32次方 - 1 键值对(40多亿)
        示例1:同时将多个 field-value (域-值)对设置到哈希表 key 中。
            hmset studentNo1   name "redis tutorial" description "redis basic commands for caching" likes 20 visitors 23000
            备注:设置了 studentNo1 的一些描述信息(name, description, likes, visitors) 到哈希表的 studentNo1 key 中
              
        示例2:删除一个或多个哈希表字段
            hdel studentNo1 name      
        
        示列3:查看哈希表 key 中,指定的字段是否存在
            hexists studentNo1 naem
            hexists yeb:gcps:hash_town_all_info_town_{by:indexkey=31611}{exp=86400} name
            
        示列4:获取存储在哈希表中指定字段的值。
            hget studentNo1 description
        
        示列5:获取在哈希表中指定 key 的所有字段和值
            hgetall studentNo1
            
        示列6:获取所有哈希表中的字段
             hkeys studentNo1
        
        示列7:只有在字段 field 不存在时,设置哈希表字段的值。
            hsetnx studentNo2 description "loveDaJia"
    
    4.3) list  Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)一个列表最多可以包含 2的32次方 - 1 个元素 (4294967295, 每个列表超过40亿个元素)
    
        示列1:LPUSH 将值test1 插入了名为 mylist 的列表当中
            lpush mylist test1
            
        示列2:获取列表长度
            LLEN key
        
        示例3:移出并获取列表的第一个元素
            LPOP key
        
    4.4)  Set  Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)  集合中最大的成员数为 2的32次方 - 1 (4294967295, 每个集合可存储40多亿个成员)
        
        示列1:向集合添加一个或多个成员
            sadd settest test1
        
        示例2:获取集合的成员数
            scard settest

    4.5) sorted set  有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 2的32次方 - 1 (4294967295, 每个集合可存储40多亿个成员)
        
        示列1:ZADD 向 redis 的有序集合中添加了三个值并关联上分数
             zadd sortedSetTest 1 test1
        
        示列2: 通过索引区间返回有序集合成指定区间内的成员
             zrange sortedSetTest 0 10 withscores
    
    4.6) HyperLogLog     Redis 在 2.8.9 版本添加了 HyperLogLog 结构。Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的、并且是很小的。在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素
        示列1:添加指定元素到 HyperLogLog 中
            pfadd hyperloglogTest test1
        
        示列2:返回给定 HyperLogLog 的基数估算值。
            pfcount hyperloglogTest
            
5) redis 发布订阅
    发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。Redis 客户端可以订阅任意数量的频道。订阅频道(channel1)的三个客户端 client1、client2 和 client3.  当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:
    示列1:创建了订阅频道名为 redisChat
        subscribe redisChat
   
    示列2:重新开启个 redis 客户端,然后在同一个频道 redisChat 发布两次消息,订阅者就能接收到消息
        publish redisChat "Redis is a great caching technique"
        
6) redis 事务        
    a. Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证:
        批量操作在发送 EXEC 命令前被放入队列缓存;
        收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行;
        在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中;
    b. 一个事务从开始到执行会经历以下三个阶段:
        开始事务;
        命令入队;
        执行事务;

    c. 单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。事务可以理解为一个打包的批量执行
    脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。
        示列:
        --开启事务
            multi
        --将命令入队到事务中
            set mykey1 test1
            set mykey4 test4
        -- 执行所有事务块内的命令
            EXEC

7) redis 脚本:使用 Lua 解释器来执行脚本。 Redis 2.6 版本通过内嵌支持 Lua 环境。执行脚本的常用命令为 EVAL。

8) redis 连接
     -- 通过密码验证连接到 redis 服务
     auth "password"    
     -- 并检测服务是否在运行
     ping
     -- 关闭当前连接
     quit
    
9) redis 数据备份与恢复
    --  该命令将在 redis 安装目录中创建dump.rdb文件
    SAVE
    --  获取 redis的 安装目录
    CONFIG GET dir
    
10) redis 安全
    --查看是否设置了密码验证
     config get requirepass
    --设置密码
     config set requirepass zjb
    --客户端连接 redis 服务密码验证
     auth zjb
    
11) Redis 客户端连接
        Redis 通过监听一个 TCP 端口或者 Unix socket 的方式来接收来自客户端的连接,当一个连接建立后,Redis 内部会进行以下一些操作:首先,客户端 socket 会被设置为非阻塞模式,因为 Redis 在网络事件处理上采用的是非阻塞多路复用模型。然后为这个 socket 设置 TCP_NODELAY 属性,禁用 Nagle 算法然后创建一个可读的文件事件用于监听这个客户端 socket 的数据发送。在 Redis2.4 中,最大连接数是被直接硬编码在代码里面的,而在2.6版本中这个值变成可配置的。maxclients 的默认值是 10000,你也可以在 redis.conf 中对这个值进行修改。
    --获取最大连接数
    config get maxclients
    --在服务启动时设置最大连接数为 100000
    redis-server --maxclients 100000
    
12) Redis 管道技术
        Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。这意味着通常情况下一个请求会遵循以下步骤:客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应。服务端处理命令,并将结果返回给客户端。Redis 管道技术可以在服务端未响应时,客户端可以继续向服务端发送请求,并最终一次性读取所有服务端的响应。
    
13) Redis 分区    
        分区是分割数据到多个Redis实例的处理过程,因此每个实例只保存key的一个子集。
    分区的优势:
    a.通过利用多台计算机内存的和值,允许我们构造更大的数据库。
    b.通过多核和多台计算机,允许我们扩展计算能力;通过多台计算机和网络适配器,允许我们扩展网络带宽。
    
    分区的不足:
    a.涉及多个key的操作通常是不被支持的。举例来说,当两个set映射到不同的redis实例上时,你就不能对这两个set执行交集操作;
    b.涉及多个key的redis事务不能使用;
    c.当使用分区时,数据处理较为复杂,比如你需要处理多个rdb/aof文件,并且从多个实例和主机备份持久化文件;
    d.增加或删除容量也比较复杂。redis集群大多数支持在运行时增加、删除节点的透明数据平衡的能力,但是类似于客户端分区、代理等其他系统则不支持这项特性。然而,一种叫做presharding的技术对此是有帮助的;

    分区类型:
    a.范围分区:最简单的分区方式是按范围分区,就是映射一定范围的对象到特定的Redis实例。
    b.哈希分区:另外一种分区方法是hash分区,这对任何key都适用,也无需是object_name:这种形式,像下面描述的一样简单.
         用一个hash函数将key转换为一个数字,比如使用crc32 hash函数。对key foobar执行crc32(foobar)会输出类似93024922的整数。对这个整数取模,将其转化为0-3之间的数字, 就可以将这个整数映射到4个Redis实例中的一个了。93024922 % 4 = 2,就是说key foobar应该被存到R2实例中。注意:取模操作是取除的余数,通常在多种编程语言中用%操作符实现。

参看文章:

https://www.runoob.com/redis/redis-install.html

https://www.cnblogs.com/Rawls/p/10574511.html  --redis桌面管理工具使用

https://www.redis.net.cn/order/3539.html

 

标签:redis,RedisDesktopManager,Redis,key,常用命令,集合,示列,客户端
来源: https://www.cnblogs.com/jiarui-zjb/p/12578503.html