Redis使用

1.Redis安装

1、下载源码,解压缩后编译源码。 

```linux
$ wget http://download.redis.io/releases/redis-2.8.3.tar.gz
$ tar xzf redis-2.8.3.tar.gz
$ cd redis-2.8.3
$ make
```

2、编译完成后,在Src目录下,有四个可执行文件redis-server、redis-benchmark、redis-cli和redis.conf。然后拷贝到一个目录下。 

```linux
mkdir /usr/redis
cp redis-server  /usr/redis
cp redis-benchmark /usr/redis
cp redis-cli  /usr/redis
cp redis.conf  /usr/redis
cd /usr/redis
```

3、启动Redis服务。

```linux
./redis-server ./redis.conf
```

  4、然后用客户端测试一下是否启动成功。 

```linux
./redis-cli 
redis> set foo bar
OK
redis> get foo
"bar"
```

5.修改redis到后台运行
1) vi redis.conf
2.)修改daemonize 的 no 为  yes

2.查看Redis有没有起来

[suguowen@localhost myredis]$ ps -ef|grep redis

3.打开Redis服务

[suguowen@localhost myredis]$ ./redis-server ./redis.conf 

4.杀死Redis进程(3398是id号,杀进程请看链接)

[suguowen@localhost myredis]$ kill -s 9 3398

5.启动Redis

[suguowen@localhost myredis]$ ./redis-cli

6.基础常见操作

> 1.选择数据库
>
> ```linux
> select 1	-- 0~15都是redis默认库,不同库数据不共享
> ```
>
> 2.查看有多少个键值对
>
> ```linux
> DBSIZE
> ```
>
> 3.查看所有键值对的key
>
> ```linux
> keys *
> ```
>
> 4.删除key
>
> ```linux
> FLUSHDB		-- 当前库
> FLUSHALL	-- 所有库
> ```
>
> 5.是否存在k1(key)
>
> ```linux
> EXISTS k1
> ```
>
> 6.迁移key到其他2库
>
> ```linux
> move k1 2
> ```
>
> 7.设置key过期时间
>
> ```linux
> expire k1 10	-- 让k1,10秒钟过期(k1本来已经存在)
> setex k2 10 v1 	-- 让k2,10秒过期(k2本来不存在,现在设置并赋值)
> ```
>
> 8.查看key还有多少秒过期
>
> ```linux
> ttl k1		-- -1表示永不过期,-2表示已过期(过期就会销毁)
> ```
>
> 9.设置key
>
> ```linux
> set k1 hello	-- 设置k1的值为hello,如果存在同名k1则覆盖
> setnx k2 hello	-- 设置k2的值为hello,如果存在则不覆盖,即此语句失效
> ```
>
> 10.查看数据类型
>
> ```linux
> type k1		-- 查看k1的数据类型
> ```
>
> 11.给key增加内容
>
> ```linux
> append k1 123		-- k1已经存在,在其value后面补123
> ```
>
> 12.返回value长度
>
> ```linux
> strlen k1	-- 返回k1的value的长度
> ```
>
> 13.自增/自减效果(value数字才能加减)
>
> ```linux
> incr k1 -- 每次+1
> decr k1 -- 每次-1
> ```
>
> 15.截取value一部分输出
>
> ```linux
> getrange k1 0 -1	-- 0~--1即全部输出
> ```
>
> 16.把value第n位替换
>
> ```linux
> setrange k1 0 xxx	-- 把第0位的数换位xxx
> ```



7.rdb持久化实例(A,B是两个终端;代表A代表程序员,B代表运维,程序员负责测试redis,运维负责修复redis数据)

-- 如何触发快照保存:bgsave、save、配置文件、flushall(无意义

-- 如何恢复:将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可

vim redis.conf  -- A:修改快照时间(可以不修改,等待时间长而已)

./redis-server ./redis.conf  :A

./redis-cli   :A

set k1 v1   :A

set k2 v2   :A

cp dump.rdb dump_pk.rdb  :B:另开一个终端,拷贝dump文件(不能保证那台电脑挂,需要多备份)

flushall    :A:模拟机器故障

shutdown    :A

exit    :A

---------------------
./redis-server ./redis.conf  :A

./redis-cli   :A

keys *    :A:返回0,找不到任何记录,为什么呢??

rm -f dump.rdb     B:怀疑dump文件损坏,删除

cp dump_pk.rdb dump.rdb     :B:把bak文件修改回来查看

./redis-server ./redis.conf  :A

./redis-cli   :A

keys *    :A:记录找回来了!!原来,上面shutdown的时候,把flushall这条命令也保存在快照了

8.aof持久化

-- 当dump和aof文件同时存在,肯定寻找aof文件,如果aof文件损坏,将无法连接数据库!!

-- aof文件损坏修复方式:./redis-check-aof  --fix appendonly.aof

vim redis.conf -- 修改appendonly yes即可

9.Redis的事务

redis 127.0.0.1:7000> multi
OK
redis 127.0.0.1:7000> set a aaa
QUEUED
redis 127.0.0.1:7000> set b bbb
QUEUED
redis 127.0.0.1:7000> set c ccc
QUEUED
redis 127.0.0.1:7000> exec
1) OK
2) OK
3) OK

10.Redis消息订阅

SUBSCRIBE redisChat   -- A:终端A开启订阅redisChat的消息

PUBLISH redisChat "Redis is a great caching technique"    -- B:终端B在redisChat频道发送消息

11.Redis的主从复制

-- 修改配置文件方法:
-- 1.拷贝多个redis.conf文件
-- 2.开启daemonize yes(开启守护进程)
-- 3.pid文件名字(管道名字,加_[端口名]即可)
-- 4.指定端口(不同终端开不同端口)
-- 5.log文件名字(eg:""→"6379.log",日志文件不能相同,不然会覆盖)
-- 6.dump.rdb名字(eg:"dump.rdb"→"dump6379.rdb"dump不能相同,不然会覆盖)

-- 第一步,配置文件
cp redis.conf redis_1.conf    -- 多开
vim redis.conf    -- 修改配置文件
vim redis_1.conf  -- 修改配置文件
vim redis_2.conf  -- 修改配置文件


-- 第二步,实验一主二从(终端A:6379;终端B:6380;终端C:6381)
info replication    -- A/B/C:查看自己的身份
slaveof 127.0.0.1 6379    -- B、C:拜A为大哥
set k1 v1    -- A
set k2 v2    -- A
get k1    -- B:B能够拿到大哥A设置的值,一主二从完成
get k1    -- C:C能够拿到大哥A设置的值,一主二从完成

-- 第三步,实验薪火相传(终端A:6379;终端B:6380;终端C:6381)
slaveof 127.0.0.1 6379    -- B:拜A为大哥
slaveof 127.0.0.1 6380    -- C:拜B为大哥
set k1 v1    -- A
get k1    -- B:B能够拿到大哥A设置的值,薪火相传完成
get k1    -- C:C能够拿到大哥A设置的值,薪火相传完成

-- 第三步,实验哨兵模式(终端A:6379;终端B:6380;终端C:6381)
touch sentinel.conf
vim sentinel.conf    -- 加这句话sentinel monitor host6379 127.0.0.1 6379 1
-- 这句话意思host6379随笔改,127..是大哥的ip,6379是大哥的端口,1是主机死了,从机票数多1做大哥
slaveof 127.0.0.1 6379    -- B、C:拜A为大哥
shutdown    -- A:A死了
-- 这时候,B、C进行了N轮投票,然后选出了大哥,这里假设B成了大哥
info replication    -- C:查看自己的身份,并且看到了大哥从A变成了B
set k1 v1    -- B
get k1    -- C:C能够拿到大哥B设置的值
-- 这时候A又回来了,但是不再是大哥了!!
get k1    -- A:A能够拿到大哥B设置的值,哨兵模式完成


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值