Chinaunix首页 | 论坛 | 博客
  • 博客访问: 873621
  • 博文数量: 72
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1693
  • 用 户 组: 普通用户
  • 注册时间: 2014-08-04 15:53
个人简介

主要从事Linux,云原生架构改造,服务网格,ELK,python,golang等相关技术。

文章分类

全部博文(72)

文章存档

2015年(52)

2014年(20)

分类: NOSQL

2015-06-04 17:37:44

Redis常用命令

Redis提供了丰富的命令对数据库和各种数据库类型操作,这些命令可以在Linux终端使用。

1.键值相关命令

2.服务器相关命令

 

键值相关命令

Keys

返回满足给定pattern的所有key

127.0.0.1:6379> keys * 用表达式*表示取出所有的key

 1) "mylist3"

 2) "myzset2"

 3) "mylist2"

 4) "myset2"

 5) "myset3"

 6) "key1"

 7) "hy4"

 8) "user:002"

 9) "key6"

10) "key2"

...

127.0.0.1:6379> keys my*

 1) "mylist3"

 2) "myzset2"

 3) "mylist2"

 4) "myset2"

 5) "myset3"

 6) "myset"

 7) "myset6"

 8) "mylist4"

...

 

Exists

确认一个key是否存在

127.0.0.1:6379>  exists myset

(integer) 1

127.0.0.1:6379>  exists age

(integer) 1

127.0.0.1:6379>  exists hello

(integer) 0

从结果来看,myset键和age键存在,hello键不存在

 

Del

删除一个key

127.0.0.1:6379> del age

(integer) 1

127.0.0.1:6379> EXISTS ahe

(integer) 0

127.0.0.1:6379> EXISTS age

(integer) 0

 

Expire

设置一个key的过期时间

在本例中,我们设置addr这个key的过期时间是10秒,然后我们不断的用ttl来获取这个key的有效时常,直至为-1说明此值已过期

127.0.0.1:6379> expire name 10

(integer) 1

127.0.0.1:6379> ttl name

(integer) 7

127.0.0.1:6379> ttl name

(integer) 5

127.0.0.1:6379> ttl name

(integer) 5

127.0.0.1:6379> ttl name

(integer) -1

127.0.0.1:6379> EXISTS name

(integer) 0 说明name键已经过期

 

Move

将当前数据库中的key转移到其它数据库中

127.0.0.1:6379> select 0

OK

127.0.0.1:6379> get age

(nil)

127.0.0.1:6379> set age 20

OK

127.0.0.1:6379> get age

"20"

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]> select 0

OK

127.0.0.1:6379> move age 1

(integer) 1

127.0.0.1:6379> select 1

OK

127.0.0.1:6379[1]> keys *

1) "age"

127.0.0.1:6379[1]> SELECT 0

OK

127.0.0.1:6379> get age

(nil)

127.0.0.1:6379> EXISTS age age已经被移动到1数据库,所以不存在

(integer) 0

 

Persist

移除给定key的过期时间

127.0.0.1:6379[1]> expire age 300

(integer) 1

127.0.0.1:6379[1]> ttl age

(integer) 294

127.0.0.1:6379[1]> persist age 代表取消掉他的过期时间,但是它还存在

(integer) 1

127.0.0.1:6379[1]> ttl age

(integer) -1

127.0.0.1:6379[1]> get age

"20"

 

Randomkey

随机返回key空间的一个key

127.0.0.1:6379[1]> select 0

OK

127.0.0.1:6379> RANDOMKEY

"key3"

127.0.0.1:6379> RANDOMKEY

"key6"

127.0.0.1:6379> RANDOMKEY

"myset7"

 

Rename

重命名key

127.0.0.1:6379[1]> keys *

1) "age"

127.0.0.1:6379[1]> rename age age_new

OK

127.0.0.1:6379[1]> keys *

1) "age_new"

 

Type

返回值的类型

127.0.0.1:6379> type mylist

list

127.0.0.1:6379> type myset

set

127.0.0.1:6379> type myzset

zset

 

Ping

测试连接是否存活

127.0.0.1:6379> ping

PONG

[root@vm4 ~]# redis-cli shutdown

[root@vm4 ~]# redis-cli 

Could not connect to Redis at 127.0.0.1:6379: Connection refused

not connected> ping

Could not connect to Redis at 127.0.0.1:6379: Connection refused

 

Select

选择数据库。Redis数据库编号从015,我们可以选择任意一个数据库来进行数据的存取

127.0.0.1:6379> select 1

OK

127.0.0.1:6379[1]> select 12

OK

127.0.0.1:6379[12]> select 16

(error) ERR invalid DB index

当选择16时,报错,说明没有编号为16的这个数据库

 

Quit/exit/Ctrl+c

退出连接。

 

Dbsize

返回当前数据库中key的数目

127.0.0.1:6379> dbsize

(integer) 0

127.0.0.1:6379> select 0

OK

127.0.0.1:6379> dbsize

(integer) 27

结果说明库中有27key

 

Info

获取服务器的信息和统计

127.0.0.1:6379>  info

# Server

redis_version:3.0.1

redis_git_sha1:00000000

redis_git_dirty:0

redis_build_id:65a152453754ded

redis_mode:standalone

os:Linux 2.6.32-431.el6.x86_64 x86_64

arch_bits:64

multiplexing_api:epoll

gcc_version:4.4.7

process_id:1432

run_id:53741e5b80f670976bbde9c71a45f972ec11e4a1

tcp_port:6379

uptime_in_seconds:640

uptime_in_days:0

.......

 

Config get

 实时传储收到的请求。

127.0.0.1:6379> config get dir

1) "dir"

2) "/root"

127.0.0.1:6379> 

本例中我们获取了dir这个参数配置的值,如果想获取全部参数的配置值也很简单,只需要执行“config get * ”即可将全部的值都显示出来。

 

Flushdb

删除当前选选择数据库中的所有key

127.0.0.1:6379> dbsize

(integer) 27

127.0.0.1:6379> flushdb

OK

127.0.0.1:6379> dbsize

(integer) 0

在本例中我们将0号数据库中的key都清除了。

 

Flushall

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

127.0.0.1:6379[1]> dbsize

(integer) 1

127.0.0.1:6379[1]> select 0

OK

127.0.0.1:6379> flushall

OK

127.0.0.1:6379> select 1

OK

127.0.0.1:6379[1]> dbsize

(integer) 0

 

 

Redis高级实用特性

1.安全性

2.主从复制

3.事务处理

4.持久化机制

5.发布订阅消息

6.虚拟内存的使用

 

安全性

设置客户端连接后进行任何其他指定前需要使用的密码。

 

警告:因为redis速度相当快,所以在一台比较好的服务器下,一个外部的用户可以在一秒钟进行150k次的密码尝试,这意味着你需要指定非常非常强大的密码来防止暴力破解。

 

我们启动一个客户端试一下。

[root@vm4 ~]# vim /usr/local/lnmp/redis/etc/redis.conf

# requirepass foobared

requirepass westos 这里我们设置客户端登录密码为westos

[root@vm4 ~]# redis-cli shutdown

[root@vm4 ~]# redis-server /usr/local/lnmp/redis/etc/redis.conf 

[root@vm4 ~]# redis-cli 

127.0.0.1:6379> keys *

(error) NOAUTH Authentication required.

127.0.0.1:6379> auth westos 显示权限被禁止,我们授权

OK

127.0.0.1:6379> keys *

(empty list or set)

127.0.0.1:6379> set name hy

OK

127.0.0.1:6379> quit

[root@vm4 ~]# redis-cli -a westos 我们通过指定密码登录

127.0.0.1:6379> keys *

1) "name"

上面我们看到的授权的两种方式

 

 

主从复制

Redis主从复制配置和使用都非常简单。通过主从复制可以允许多个slave sever拥有和master server相同的数据库副本。

Redis主从复制特点:

1.Master可以拥有多个slave

2.多个slave可以连接同一个master外,还可以连接到其它slave

3.主从复制不会阻塞master,在同步数据时,master可以继续处理client请求。

4.提高系统的伸缩性

Picture1.png

下面是先将数据备份,然后slave可以直接从备份中同步:

Picture2.png

 

配置slave服务器很简单,只需要在slave的配置文件中加入以下配置:

Slaveof 192.168.10.132 6379 #指定masterip和端口

 

Masterauth westos #这是主机的密码

 

 

下面我们开始主从复制的配置:

vm4 192.168.10.131 master

vm5 192.168.10.133 slave

首先我们清空masterslave里面的数据:

127.0.0.1:6379> flushall

OK

然后在slave上进行配置:

[root@vm5 ~]# vim /usr/local/lnmp/redis/etc/redis.conf

# slaveof  

slaveof 192.168.10.131 6379

 

# masterauth 

masterauth westos

[root@vm5 ~]# redis-server /usr/local/lnmp/redis/etc/redis.conf 

[root@vm5 ~]# redis-cli -a westos

127.0.0.1:6379> keys *

(empty list or set)

 

我们在master上写,然后查看slave中的状态

127.0.0.1:6379> set age 20

OK

127.0.0.1:6379> keys *

1) "age"

 

[root@vm5 ~]# redis-cli -a westos slave上查看

127.0.0.1:6379> keys *

1) "age" 此时说明已经同步成功

 

 

此时我们查看那个是master那个是slave我们只需要调用info这个命令

[root@vm5 ~]# redis-cli -a westos slave上查看

127.0.0.1:6379> info

# Replication

role:slave 我们可以看到现在的这台主机为slave

master_host:192.168.10.131

master_port:6379

master_link_status:up

master_last_io_seconds_ago:10

master_sync_in_progress:0

slave_repl_offset:447

slave_priority:100

slave_read_only:1

[root@vm4 ~]# redis-cli -a westos master上查看

# Replication

role:master

connected_slaves:1

slave0:ip=192.168.10.133,port=6379,state=online,offset=615,lag=1

master_repl_offset:615

repl_backlog_active:1

repl_backlog_size:1048576

repl_backlog_first_byte_offset:2

repl_backlog_histlen:614

 

阅读(5060) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~