详细内容可查看 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 设置值

get key //获取值 如上图
dbsize 查看此数据库中有多少个key
keys * 查看所有的key
del key 删除某一个key 返回影响的个数

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

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

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

set k3 I Love china 如果是这样,需要把value 用引号包含起来,这样才能设置成功
substr key start end 截取字符串函数 包含 start和end
append key " 追加的字符串 " //返回新字符串的长度

PHP代码实现:
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结束

rpop key

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

srem key value //删除指定key 中的值
srem zhangsanFri james //从sanzhangFri 这个集合中删除 james
sinter key1 key2 两个集合的交集

有交集

无交集 返回 empty list or set

sunion key1 key2 两个集合的并集

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

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

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

sort set排序集合
sort set这是list和set集中体现,称为排序集合类型。
和set一样也是String集合的一种体现。
不同的是每一个元素都会关联一个 权
通过权/值可以有序的获取集合中的元素。
zadd key score value 添加元素到结合,元素对应的是 score 这个键

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


zrange key start end //显示key 中start 到end的集合
zrange cj 0 100 显示如下结果


zrevrange cj 0 100 倒叙

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

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

zscore key val 返回这个val的权值
zscore cj doujingsi 返回 154
PHP写法:

zcard key 返回元素的个数

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

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

list
有序 能重复的列表
set
无序 不能重复
sort set
Hash
Redis Hash
Hash维护的是也是一个集合,集合中每一个item便是一个数组,由于 array("key"=>"value","key2"=>"value2"); 这样的一个类型。
持久化功能
什么叫持久化
持久化就是内存中的数据保存到磁盘的结果就叫持久化。
redis是一款nosql的产品。持久化会把数据保存在磁盘一份,当服务器因某纵横原因重新启动,
会自动的恢复到内存中。
持久化分两种:
snap shotting 快照持久化
该持久化默认开启。 一次性会把redis中的数据保存在硬盘中,
适用于数据比较少,不适合大数据的一次性保存。
如10-20G这样就不适合频繁保存。
如何手动备份数据: ./redis-cli bgsave

那么说到持久化就会有一个保存的频率。
那么这个频率怎么说?保存在什么位置?
保存到文件名应该在什么位置,叫什么名字

位置:
redis.conf

频率:

每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命令如下:
找到redis的运行进程:
ps -A | grep redis

杀死进程:
kill -9 2675
直接杀死进程

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

那么我们看看输入数据是不是自动保存的,
打开客户端:
设置一个key bjbj

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

有变化了,大小从0 变成了 56
vim appendonly.aof 看看

这就是保存的数据。
AOF备份的一个频率:

数据最安全 服务器性能低
数据较安全 服务器性能中等
数据不安全 服务器性能高(优良)
# 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
./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一下,才能访问数据


php代码:

以上就是主从服务器的设置。
redis 设置密码:
打开配置文件 redis.conf 然后查找:
requirepass foobared 修改成 requirepass yourpassword
保存退出,并且重新启动redis服务器。
连接客户端时,需要 auth yourpassword。

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