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    //输入密码进行认证

  • 相关阅读:
    Composite in Javascript
    Model Validation in Asp.net MVC
    HttpRuntime.Cache vs. HttpContext.Current.Cache
    Controller Extensibility in ASP.NET MVC
    The Decorator Pattern in Javascript
    The Flyweight Pattern in Javascript
    Model Binding in ASP.NET MVC
    Asp.net MVC
    jQuery Ajax 实例 全解析
    ASP.NET AJAX入门系列
  • 原文地址:https://www.cnblogs.com/is-possible/p/12469809.html
Copyright © 2011-2022 走看看