zoukankan      html  css  js  c++  java
  • redis 常用命令

    http://www.redis.cn

    一、redis查数据

    1 连接服务

    [root@redis1-20 ~]# telnet 127.0.0.1 6380
    Trying 127.0.0.1...
    Connected to 127.0.0.1.
    Escape character is '^]'.
    #用telnet也能登录,但是无法查看key的value
    [root@redis1-20 src]# ./redis-cli -p 6380
    #redis可能有好几个服务,要指定端口连接。

    2 查询字符串

    redis> GET db
    (nil)
     #不存在
    redis> SET db redis
    OK
    redis> GET db
    "redis"
    #查询成功

    3 查询列表中的元素

    127.0.0.1:12701> lrange list_name  0 -1
    1) "a"
    2) "b"
    3) "c"
    4) "d"
    5) "e"
    #0 -1代表区间为第一个到最一个
    #可见,在列表中有5个元素

    二、redis-cli 客户端操作Redis -

    redis是一个key-value的Nosql,我们能操作就只有String类型key以及各种类型value.但是一定要注意我们添加的一般都是字符串,只是会组织为特定数据结构.

    set(key ,map,set)  -->  set(key ,1),set(key ,"2")

    注意:要先启动redis服务端

    2.1、对value为string类型的常用操作

    set key value       //将字符串值value关联到key
    get key               //返回key关联的字符串值

    127.0.0.1:6379> set name zq
    OK
    127.0.0.1:6379> get name
    "zq"
    127.0.0.1:6379> 

    mset               //同时设置一个或多个 key-value 对
    mget              //返回所有(一个或多个)给定 key 的值

    127.0.0.1:6379> mset age 20 sex man name zq
    OK
    127.0.0.1:6379> mget age sex name
    1) "20"
    2) "man"
    3) "zq"
    127.0.0.1:6379> 

    incr key                     //将 key 中储存的数字值增1(key不存在,则初始化为0,再加1)
    decr key                  //将 key 中储存的数字值减1(key不存在,则初始化为0,再减1)
    incrBy key                  //自增多少
    decrBy key

    127.0.0.1:6379> mget age sex name
    1) "20"
    2) "man"
    3) "zq"
    127.0.0.1:6379> incr age
    (integer) 21
    127.0.0.1:6379> get age
    "21"
    127.0.0.1:6379> decr age
    (integer) 20
    127.0.0.1:6379> get age
    "20"
    127.0.0.1:6379> incrby age 3
    (integer) 23
    127.0.0.1:6379> decrby age 6
    (integer) 17
    127.0.0.1:6379> get age
    "17"
    127.0.0.1:6379> 

    2.2、对key的常用操作

    keys *                    //获取所有key列表
    del key                    //删除key
    expire key xx                   //设置key的过期时间(xx秒后过期)
    ttl key                  //查看key的过期时间

    127.0.0.1:6379> keys *
    1) "sex"
    2) "name"
    3) "age"
    127.0.0.1:6379> del sex
    (integer) 1
    127.0.0.1:6379> keys *
    1) "name"
    2) "age"
    127.0.0.1:6379> expire age 10
    (integer) 1
    127.0.0.1:6379> ttl age
    (integer) 6
    127.0.0.1:6379> ttl age
    (integer) 3
    127.0.0.1:6379> ttl age
    (integer) 1
    127.0.0.1:6379> ttl age
    (integer) -2
    127.0.0.1:6379> get age
    (nil)
    127.0.0.1:6379> 

    select 0-15             //选择库
    flushall                   //清空整个redis服务器数据,所有的数据库全部清空
    flushdb                  //清除当前库,redis中默认有16个数据库,名称分别为0,1,2...15

    127.0.0.1:6379> select 1
    OK
    127.0.0.1:6379[1]> keys *
    (empty list or set)
    127.0.0.1:6379[1]> set name zq1
    OK
    127.0.0.1:6379[1]> get name
    "zq1"
    127.0.0.1:6379[1]> flushdb
    OK
    127.0.0.1:6379[1]> get name
    (nil)
    127.0.0.1:6379[1]> keys *
    (empty list or set)
    127.0.0.1:6379[1]> select 0
    OK
    127.0.0.1:6379> keys *
    1) "name"
    127.0.0.1:6379> flushall
    OK
    127.0.0.1:6379> keys *
    (empty list or set)
    127.0.0.1:6379> 

    2.3、对list集合的常用操作

    redis怎么实现栈和队列?          -->           都用list,控制一边进同一边出就是栈,一边进另一边出就是队列.

    list集合可以看成是一个左右排列的队列(列表)

    lpush key value                   //将一个或多个值 value 插入到列表 key 的表头(最左边)
    rpush key value                   //将一个或多个值 value 插入到列表 key 的表尾(最右边)

    127.0.0.1:6379> lpush users zq1 zq2
    (integer) 2
    127.0.0.1:6379> rpush users zq4 zq5
    (integer) 4
    127.0.0.1:6379> lrange users 0 -1
    1) "zq2"
    2) "zq1"
    3) "zq4"
    4) "zq5"
    127.0.0.1:6379> 

    lpop key                   //移除并返回列表 key 的头(最左边)元素。
    rpop key                   //移除并返回列表 key 的尾(最右边)元素。

    127.0.0.1:6379> lrange users 0 -1
    1) "zq2"
    2) "zq1"
    3) "zq4"
    4) "zq5"
    127.0.0.1:6379> lpop users
    "zq2"
    127.0.0.1:6379> rpop users
    "zq5"
    127.0.0.1:6379> lrange users 0 -1
    1) "zq1"
    2) "zq4"
    127.0.0.1:6379> 

    lindex key index                   //返回列表 key 中,下标为 index 的元素
    ltrim key start stop                   //对一个列表进行修剪

    127.0.0.1:6379> lpush user zq2 zq4 zq5 zq6 zq7 zq8 zq9 zq10
    (integer) 8
    127.0.0.1:6379> lrange 0 -1
    (error) ERR wrong number of arguments for 'lrange' command
    127.0.0.1:6379> lrange user 0 -1
    1) "zq10"
    2) "zq9"
    3) "zq8"
    4) "zq7"
    5) "zq6"
    6) "zq5"
    7) "zq4"
    8) "zq2"
    127.0.0.1:6379> lindex user 0
    "zq10"
    127.0.0.1:6379> ltrim user 0 3
    OK
    127.0.0.1:6379> lrange user 0 -1
    1) "zq10"
    2) "zq9"
    3) "zq8"
    4) "zq7"
    127.0.0.1:6379> 

    2.4、对set集合的常用操作

    set集合是一个无序的不含重复值的队列

    sadd  key member  //将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略
    srem key member   //移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略
    smembers key        //返回集合 key 中的所有成员。

    127.0.0.1:6379> sadd users1 xiaoming xiaoli xiaohua
    (integer) 3
    127.0.0.1:6379> smembers users1
    1) "xiaoli"
    2) "xiaoming"
    3) "xiaohua"
    127.0.0.1:6379> srem users1 xiaoli
    (integer) 1
    127.0.0.1:6379> smembers users1
    1) "xiaoming"
    2) "xiaohua"
    127.0.0.1:6379> 

    2.5、对SortedSet(有序集合)的操作

     2.6、对hash类型的常用操作

    hash类型类似于php的数组

    hset key name value      //添加一个name=>value键值对到key这个hash类型
    hget key name       //获取hash类型的name键对应的值
    hmset key name1 key1 name2 key2       //批量添加name=>value键值对到key这个hash类型
    hmget key name1 name2      //批量获取hash类型的键对应的值
    hkeys       //返回哈希表 key 中的所有键
    hvals      //返回哈希表 key 中的所有值
    hgetall       //返回哈希表 key 中,所有的键和值

    127.0.0.1:6379> hset user:1 name zhangsan
    (integer) 1
    127.0.0.1:6379> hmset user:1 age 18 sex nv
    OK
    127.0.0.1:6379> hget user:1 name
    "zhangsan"
    127.0.0.1:6379> hmget user:1 name age sex
    1) "zhangsan"
    2) "18"
    3) "nv"
    127.0.0.1:6379> hgetall user:1
    1) "name"
    2) "zhangsan"
    3) "age"
    4) "18"
    5) "sex"
    6) "nv"
    127.0.0.1:6379> hkeys user:1
    1) "name"
    2) "age"
    3) "sex"
    127.0.0.1:6379> hvals user:1
    1) "zhangsan"
    2) "18"
    3) "nv"
    127.0.0.1:6379> 

    2.7、事务

    multi        //标记一个事务块的开始。
    exec         //执行所有事务块内的命令。

    127.0.0.1:6379> multi
    OK
    127.0.0.1:6379> set name zhangsan
    QUEUED
    127.0.0.1:6379> set age 19
    QUEUED
    127.0.0.1:6379> keys *
    QUEUED
    127.0.0.1:6379> exec
    1) OK
    2) OK
    3) 1) "user:1"
       2) "name"
       3) "age"
       4) "user"
       5) "users"
       6) "users1"
    127.0.0.1:6379> 

      discard      //取消事务,放弃执行事务块内的所有命令。

           Redis的事务在执行exec指令时,才批量执行操作,没有回滚操作

    2.8、订阅/发布

      SUBSCRIBE channel [channel ...]       //订阅给定的一个或多个频道的信息。
          PUBLISH channel message       //将信息 message 发送到指定的频道 channel 。

    新开一个客户端订阅tv频道

    127.0.0.1:6379> SUBSCRIBE tv
    Reading messages... (press Ctrl-C to quit)
    1) "subscribe"
    2) "tv"
    3) (integer) 1

    再开一个窗口登录redis,执行命令

    发布nihao!消息到tv频道

    [root@iZ11b4sn7o3Z bin]# ./redis-cli -p 6379
    127.0.0.1:6379> publish tv nihao!
    (integer) 1
    127.0.0.1:6379> 

    订阅tv频道的客户端可以收到nihao!消息

    127.0.0.1:6379> SUBSCRIBE tv
    Reading messages... (press Ctrl-C to quit)
    1) "subscribe"
    2) "tv"
    3) (integer) 1
    
    1) "message"
    2) "tv"
    3) "nihao!"

    2.9、设置密码

    1)通过命令动态调整密码-临时设置

    CONFIG SET 命令可以动态地调整 Redis 服务器的配置而无须重启,重启后失效
    CONFIG SET requirepass Mrbrlm1CDK6ui1!r //将密码设置为Mrbrlm1CDK6ui1!r

    CONFIG SET requirepass ""       //清除密码
    AUTH 123456        //输入密码进行认证

    127.0.0.1:6399> ping
    (error) NOAUTH Authentication required.
    127.0.0.1:6399> AUTH Mrbrlm1CDK6ui1!r
    OK
    127.0.0.1:6399> ping
    PONG
    127.0.0.1:6399> 

    2).通过配置文件设置密码-长久设置

    在配置文件 redis.conf 中增加一行代码
    requirepass Mrbrlm1CDK6ui1!r
    将密码Mrbrlm1CDK6ui1!r设置到配置文件中,redis启动时加载该文件,即可启用密码

    # Warning: since Redis is pretty fast an outside user can try up to
    # 150k passwords per second against a good box. This means that you should
    # use a very strong password otherwise it will be very easy to break.
    #
    # requirepass foobared
    requirepass Mrbrlm1CDK6ui1!r
    # Command renaming.
    #

    重新启动服务端
    鉴权
               AUTH Mrbrlm1CDK6ui1!r    //输入密码进行认证

  • 相关阅读:
    Windows 7任务栏图标特别说明
    Linux下send函数 Broken pipe错误的解决方法
    C++实现一个简单的异常日志记录类
    C++写日志操作
    VC中设置打开文件的权限为管理员权限
    MFC 注册热键
    监控Tomcat状态及配置AIO(APR)模式
    Tomcat管理功能使用及WEB站点部署
    Tomcat多实例配置
    基于端口主机的虚拟主机
  • 原文地址:https://www.cnblogs.com/is-possible/p/12469809.html
Copyright © 2011-2022 走看看