作为程序员一定要保持良好的睡眠,才能好编程

redis 常用命令汇总

发布时间:2016-10-13


详细内容可查看  pdf:Redis-20150930.pdf


http://www.runoob.com/redis/redis-security.html




以下操作是在客户端的情况下进行的,如果是php操作redis,可以参考此文档:


http://redisdoc.com/index.html  文档查看器


https://github.com/phpredis/phpredis

https://github.com/phpredis/phpredis#close

https://github.com/phpredis/phpredis#expire-settimeout-pexpire



set key value 设置key value

get key 获取key

exists key 判断key是否存在,返回boolean值

del key 删除单个key

del key1 key2   删除多个key

type key  返回这个key的类型 type web_k

keys * 返回所有的key

dbsize 共计有多少个key

expire key seconds 设置key的过期时间

ttl key 显示剩余过期秒数

select db-index 选择数据库

move key db-index 把key从当前数据库转移到 db-index这个库中

flushdb 删除当前数据库所有的key

flushall 删除所有数据库中的多有key


<?php
  2 
  3         $rd=new redis();
  4         $rd->connect("192.168.1.107",6379);
  5         if($rd){
  6 
  7 
  8                 //判断k这个key是否存在,返回boolean
  9                //var_dump($rd->exists("k"));
 10 
 11                 /*
 12                 //$rd->set("k",122);
 13                 //根据k的value值进行递增,这个value的值必须是整形
 14                 echo $rd->incr("k");//123
 15                 echo $rd->incr("k");//124
 16                 echo $rd->incr("k");//125
 17                 //echo $rd->get("kk");
 18                 //echo "<hr>";
 19                 //echo $rd->get("k");
 20                 //echo "<hr>";
 21                 //echo $rd->get("web_k");
 22                 */
 23 
 24         }
 25 
 26 
 27 ?>

   


    String字符串

    String是redis中最基本的单位,大小为1G。

    那么是String都有哪些操作呢?

    

    set key value   设置值

    redis3.jpg

   get key  //获取值 如上图

    

    dbsize 查看此数据库中有多少个key


    keys * 查看所有的key

       

   del key 删除某一个key 返回影响的个数

    redis4.jpg

  mset key1 value1 key2 value2 keyN valueN 同时设置多个key   

    

    redis5.jpg

    这种使用方法可以在客户端使用,如果在php中这样的设置不可以,mset中必须存放数组才可以设置多个key、value

redis51.jpg

    del key1 key2 同时删除多个key 并返回影响key的个数。


    redis6.jpg

    set k3 I Love china 如果是这样,需要把value 用引号包含起来,这样才能设置成功


    substr key start end  截取字符串函数   包含 start和end

    

    append key " 追加的字符串 " //返回新字符串的长度

    redis8.jpg

    PHP代码实现:

    redis7.jpg    


    list列表
    list类型其实就是一个双向的列表,通过push、pop 操作从头部或者尾部添加删除元素。列表中的元素可以重复

    上进上出叫栈

    上进下出叫列

    这就是list的两种叫法。这是有序的,

    常用的命令有

    lpush key  value   //上进

    rpop key //删除key最后的一个值

    lrange key start end  // 显示key中的数据

    ltrim key start end  //截取key 中从start 开始 到end结束,包含start和end  

                                    //截取  和 substr 是一样的,只保留我们截取的,其他删掉了。


  


    rpush key value //从下边插入一个

    lpop  key //从上边删除一个

    

 list 从上向下 的login中插入james数据  


lrange key start  end

ltrim key start end 截取 key 从start 开始到end结束


redis11.jpg


 rpop key

redis12.jpg


set集合

set是String类型的一个无序集合,每一个集合中的元素不能重复


sadd  key  value    添加一个set


20161014103826.png


srem key  value //删除指定key 中的值

srem zhangsanFri james  //从sanzhangFri 这个集合中删除 james


sinter key1 key2 两个集合的交集


redis15.jpg

有交集

redis16.jpg

无交集 返回 empty list or set


redis19.jpg


sunion key1 key2 两个集合的并集


redis17.jpg


sdiff key1 key2 两个集合的差集 ,只会显示前者的差集,不显示后边的差集

redis18.jpg



smembers key   查看这个key 这个set中的数据

redis13.jpg


scard key //返回key集合中元素的个数

redis14.jpg

 

sort set排序集合


sort set这是list和set集中体现,称为排序集合类型。

和set一样也是String集合的一种体现。

不同的是每一个元素都会关联一个

通过权/值可以有序的获取集合中的元素。

            

zadd key score value 添加元素到结合,元素对应的是 score 这个键

redis20.jpg

zrem key value    //删除key中的value这个元素

redis21.jpg

redis27.jpg



zrange key start end //显示key 中start 到end的集合

zrange cj 0 100 显示如下结果

redis22.jpg

redis25.jpg


zrevrange cj 0 100   倒叙

redis26.jpg


zincrby cj 89 doujingsi //给指定的值 增加权89 这是追加。返回追加后的结果

redis28.jpg


zrevrank key  val  //从大到小排序  返回  val 在 key中的坐标。


zrank key val  // 返回  val 在  key 中占用的 底标  。和数组一样 坐标从0开始

redis29.jpg


zscore key  val  返回这个val的权值

zscore cj doujingsi   返回 154

PHP写法:

redis30.jpg


zcard key  返回元素的个数

redis22.jpg



//删除

zremrangebyrank key 0 0   删除排名在指定区间的元素   本身就是  从小大到排列,因此这样写就是删除最小的一个元素

redis31.jpg

这个命令解析: zrem 删除    range 查看   by rank 坐标   从 key 中 找到  0 到 0 这个元素删除掉。

redis32.jpg


list 

有序  能重复的列表


set

无序   不能重复


sort set


Hash


Redis Hash


Hash维护的是也是一个集合,集合中每一个item便是一个数组,由于  array("key"=>"value","key2"=>"value2"); 这样的一个类型。





持久化功能

什么叫持久化

持久化就是内存中的数据保存到磁盘的结果就叫持久化。

redis是一款nosql的产品。持久化会把数据保存在磁盘一份,当服务器因某纵横原因重新启动,

会自动的恢复到内存中。

持久化分两种:

 

snap shotting 快照持久化

该持久化默认开启。 一次性会把redis中的数据保存在硬盘中,

适用于数据比较少,不适合大数据的一次性保存。

如10-20G这样就不适合频繁保存。


如何手动备份数据: ./redis-cli bgsave

redis34.jpg



那么说到持久化就会有一个保存的频率。

那么这个频率怎么说?保存在什么位置?


保存到文件名应该在什么位置,叫什么名字


redis33.jpg

位置:

redis.conf

redis23.jpg

频率:

redis24.jpg

每60秒 10000次操作,保存一次

每300秒 10次操作 保存一次

每900秒 1次操作 保存一次



 append only file aof持久化


aof默认没有开启,需要修改配置文件进行修改,

/usr/local/redis-2.8.14/redis.conf

找到这个文件配置文件,使用  vim  打开


vim redis.conf  找到  appendonly no  修改成  appendonly yes

redis.jpg

保存的文件名就不用修改了,默认即可。

现在我们开启一下:

redis38.jpg


修改完配置文件会后,需要进行重新启动,否则配置文件不生效。


重新启动redis命令如下:

找到redis的运行进程:

ps -A | grep redis

redis35.jpg

杀死进程:

kill -9 2675

直接杀死进程

redis36.jpg


看看目录下是否生成了 appendonly.aof 文件,如果有它,证明开启成功了

redis37.jpg


那么我们看看输入数据是不是自动保存的,

打开客户端:

设置一个key bjbj

redis39.jpg


然后查看一下appendonly.aof 这个文件

redis40.jpg

有变化了,大小从0 变成了  56

vim appendonly.aof 看看

redis41.jpg

这就是保存的数据。


AOF备份的一个频率:

redis42.jpg

数据最安全      服务器性能低  
数据较安全      服务器性能中等
数据不安全      服务器性能高(优良)
# appendfsync always   //每次收到写命令就立即强制写入磁盘,最慢的,但是保证完全的持久化,不推荐使用
appendfsync everysec   //每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,推荐
# appendfsync no   //完全依赖 os,性能最好,持久化没保证


持久化相关指令:


./redis-cli shutdown  这个命令保存redis数据,并关闭redis服务器


[root@bogon redis-2.8.14]# ./redis-cli bgsave     手动备份redis数据
Background saving started


[root@bogon redis-2.8.14]# ./redis-cli lastsave   返回最后一次备份redis的时间
(integer) 1476439154


[root@bogon redis-2.8.14]# ./redis-cli bgrewriteaof   优化aof备份文件。可以是容量变小,并切除不需要的数据
Background append only file rewriting started


[root@bogon redis-2.8.14]# ll
total 13624
-rw-r--r--. 1 root root      56 Oct 14 03:14 appendonly.aof
-rw-r--r--. 1 root root      31 Oct 14 03:13 dump.rdb
-rwxr-xr-x. 1 root root 4167592 Oct 12 10:23 redis-benchmark
-rwxr-xr-x. 1 root root 4248336 Oct 12 10:23 redis-cli
-rw-r--r--. 1 root root   32750 Oct 14 02:58 redis.conf
-rwxr-xr-x. 1 root root 5486651 Oct 12 10:23 redis-server

redis43.jpg


./redis-cli -h 127.0.0.1  -p 6379 bgsave 还可以这样使用 ,加了参数



主从数据库设置


主要是修改配置文件

1、打开 redisdir/redis.conf 文件

2、找到 slaveof <masterip> <masterport>

     修改成:slaveof 192.168.1.80 6379

3、slave read only yes  保存退出

      如果master服务器设置了密码,那么需要修改:masterauth  <master-password>






设置需要连接的redis服务器 和端口。(如果主服务器设置了requirepass 则 需要设置masterauth ,不然不能同步主服务器)

从服务器只读模式

保存退出,并重新启动redis

因上面设置了密码,则客户端访问时,需要auth一下,才能访问数据


redis76.jpg

php代码:

redis76.jpg

以上就是主从服务器的设置。



redis 设置密码:


打开配置文件 redis.conf 然后查找:

requirepass foobared 修改成  requirepass  yourpassword

保存退出,并且重新启动redis服务器。

连接客户端时,需要  auth yourpassword。

redis78.jpg










详细内容可查看  pdf:Redis-20150930.pdf