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