设为首页 收藏本站
查看: 668|回复: 0

[经验分享] NoSQL数据库之Redis数据库管理(Redis的常用命令及高级应用)

[复制链接]

尚未签到

发表于 2016-12-19 06:17:13 | 显示全部楼层 |阅读模式
一 .Redis常用命令
        Redis提供了丰富的命令对数据库和各种数据库类型进行操作,这些命令可以在Linux终端使用。
        a.键值相关命令
        b.服务器相关命令
1.键值相关命令
        Keys:返回满足给定pattern的所有key

redis 127.0.0.1:6379> keys *
1) "myzset2"
2) "myzset3"
3) "mylist"
4) "myset2"
5) "myset3"
6) "myset4"
7) "list1"
redis 127.0.0.1:6379> keys my*
1) "myzset2"
2) "myzset3"
3) "mylist"
4) "myset2"
5) "myset3"
6) "myset4"
         exists:确认一个key是否存在。
         如下从结果来看,name键不存在,age键存在。

redis 127.0.0.1:6379> exists name
(integer) 0
redis 127.0.0.1:6379> exists age
(integer) 1
        del:删除一个key
redis 127.0.0.1:6379> del age
(integer) 1
redis 127.0.0.1:6379> exists age
(integer) 0
        expire:设置一个key的过期时间。
        在下例中,我们设置addr这个key的过期时间是10秒,然后我们不断的用ttl来获取这个key的有效时长,直至为-1说明此值已过期。

redis 127.0.0.1:6379> expire addr 10
(integer) 1
redis 127.0.0.1:6379> ttl addr
(integer) 8
redis 127.0.0.1:6379> ttl addr
(integer) 1
redis 127.0.0.1:6379> ttl addr
(integer) -1  //代表addr已经过期
redis 127.0.0.1:6379> get addr
(nil)
redis 127.0.0.1:6379> exists addr
(integer) 0
        move:将当前数据库中的key转移到其它数据库中。  数据库是从0到15,select 0表示选择0号数据库。

redis 127.0.0.1:6379> select 0
OK
redis 127.0.0.1:6379> set age 30
OK
redis 127.0.0.1:6379> get age
"30"
redis 127.0.0.1:6379> move age 1  //将age从0数据库移到1数据库
(integer) 1
redis 127.0.0.1:6379> get age
(nil)
redis 127.0.0.1:6379[1]> select 1
OK
redis 127.0.0.1:6379[1]> get age
"30"
redis 127.0.0.1:6379[1]> select 0
OK
redis 127.0.0.1:6379> exists age
(integer) 0
        persist:移除给定key的过期时间
redis 127.0.0.1:6379> expire age 300
(integer) 1
redis 127.0.0.1:6379> ttl age
(integer) 294
redis 127.0.0.1:6379> persist age
(integer) 1
redis 127.0.0.1:6379> ttl age
(integer) -1  //-1表示取消了过期时间
         randomkey:随机返回key空间的一个key。
redis 127.0.0.1:6379> randomkey
"mylist7"
redis 127.0.0.1:6379> randomkey
"mylist5"
        rename:重命名key。
redis 127.0.0.1:6379> keys *
1) "age"
redis 127.0.0.1:6379> rename age age_new
OK
redis 127.0.0.1:6379> keys *
1) "age_new"
        type:返回值的类型。
redis 127.0.0.1:6379> type addr
string
redis 127.0.0.1:6379> type myzset2
zset
redis 127.0.0.1:6379> type mylist
list


2.服务器相关命令
        ping:测试连接是否存活。

redis 127.0.0.1:6379> ping
PONG
//执行下面命令之前,停止redis服务器
redis 127.0.0.1:6379> ping
Could not connect to Redis at 127.0.0.1:6379:Connection refused
//执行下面命令之前,启动redis服务器
redis 127.0.0.1:6379> ping
PONG
        第一个ping时,说明此连接正常;第二个ping之前,我们将redis服务器停止,那么ping是失败的;第三个ping之前,我们将redis服务器启动,那么ping是成功的。
         echo:在命令行打印一些内容。

redis 127.0.0.1:6379> echo lamp
"lamp"
        select:选择数据库。Redis数据库编号从0-15,我们可以选择任意一个数据库来进行数据的存取。

redis 127.0.0.1:6379> select 1
OK
redis 127.0.0.1:6379[1]> select 16
(error) ERR invalid DB index
redis 127.0.0.1:6379[16]>
  当先择16时,报错,说明没有编号为16的这个数据库。
        quit:退出连接。

redis 127.0.0.1:6379> quit
[iyunv@localhost redis-2.2.12]#
        dbsize:返回当前数据库中key的数目。

redis 127.0.0.1:6379> dbsize
(integer) 18
        结果说明此库中有18个key。
        info:获取服务器的信息和统计。

redis 127.0.0.1:6379> info
redis_version:2.2.12
redis_git_sha1:00000000
redis_git_dirty:0
arch_bits:32
multiplexing_api:epoll
process_id:28480
uptime_in_seconds:2515
uptime_in_days:0
.
.
.
redis 127.0.0.1:6379>
        config get:实时传储收到的请求。

redis 127.0.0.1:6379> config get dir
1) "dir"
2) "/root/4setup/redis-2.2.12"
redis 127.0.0.1:6379>
        本例中我们获取了dir这个参数配置的值,如果想获取全部参数据的配置值也很简单,只需要执行"config get *"即可将全部的值都显示出来。
        flushdb:删除当前选择数据库中的所有key。

redis 127.0.0.1:6379> dbsize
(integer) 18
redis 127.0.0.1:6379> flushdb
OK
redis 127.0.0.1:6379> dbsize
(integer) 0
        本例中我们将0号数据库中的key都清除了。
        flushall:删除所有数据库中的所有key。

redis 127.0.0.1:6379[1]> dbsize
(integer) 1
redis 127.0.0.1:6379> select 0
OK
redis 127.0.0.1:6379> flushall
OK
redis 127.0.0.1:6379> select 1
OK
redis 127.0.0.1:6379[1]> dbsize
(integer) 0
redis 127.0.0.1:6379[1]> keys *
(empty list or set)
redis 127.0.0.1:6379[1]> select 0
OK
redis 127.0.0.1:6379> keys *
(empty list or set)
  在本例中我们先查看了一个1号数据库中有一个key,然后切换到0号库执行flushall命令,结果1号库中的key也被清除了,说是此命令工作正常。
 
二.Redis高级实用特性
1.安全性
        设置客户端连接后进行任何其他指定前需要使用的密码。
        警告:因为redis速度相当快,所以在一台比较好的服务器下,一个外部的用户可以在一秒钟进行150K次的密码尝试,这意味着你需要指定非常强大的密码来防止暴力破解。

[iyunv@localhost ~]# vi /usr/local/redis/etc/redis.conf
        修改配置文件中的如下配置项

#requirepass foobared
requirepass beijing
        我们设置了连接的口令是beijing。
        重启服务

[iyunv@localhost ~]# pkill redis-server
[iyunv@localhost ~]# /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
[iyunv@localhost ~]# /usr/local/redis/bin/redis-cli
redis 127.0.0.1:6379> keys *
(error) ERR operation not permitted
redis 127.0.0.1:6379> auth beijing
OK
redis 127.0.0.1:6379> keys *
1) "name"
redis 127.0.0.1:6379> exit
[iyunv@localhost ~]# /usr/local/redis/bin/redis-cli -a beijing
redis 127.0.0.1:6379> keys *
1) "name"
 
2.主从复制
        Redis主从复制配置和使用都非常简单。通过主从复制可以允许多个slave server拥有和master server相同的数据库副本。
1).Redis主从复制特点:
        a.Master可以拥有多个slave
        b.多个slave可以连接同一个master外,还可以连接到其它slave
        c.主从复制不会阻塞master,在同步数据时,master可以继续处理client请求
        d.提高系统的伸缩性
2).Redis主从复制过程:
        a.Slave与Master建立连接,发送sync同步命令
        b.Master会启动一个后台进程,将数据库快照保存到文件中,同时Master主进程会开始收集新的写命令并缓存
        c.后台完成保存后,就将此文件发送给slave
        d.Slave将此文件保存到硬盘上
3).配置主从服务器
        配置slave服务器很简单,只需要在slave的配置文件中加入以下配置:

slaveof 192.168.1.1 6379 #指定master的ip和端口
masterauth beijing #这是主机的密码
[iyunv@localhost ~]# vi /usr/local/redis/etc/redis.conf
//修改其中的slaveof <maserip> <masterport>、masterauth <master-password>
[iyunv@localhost ~]# /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
[iyunv@localhost ~]# /usr/local/redis/bin/redis-cli -a beijing
redis 127.0.0.1:6379> keys *
(empty list or set)
        配置好后,在Master设置任何key,在Slaver数据库中也会有,表示主从复制成功。
        如我们在主数据库上设置一对键值对

redis 127.0.0.1:6379> set name master
OK
redis 127.0.0.1:6379>
        在从数据库上取这个键

redis 127.0.0.1:6379> get name
"master"
redis 127.0.0.1:6379>
        我们怎么判断哪个是主哪个是从呢?我们只需调用info就可以得到主从信息,我们在从库中执行info如下:

redis 127.0.0.1:6379> info
role:slave
master_host:localhost
master_port:6379
master_link_status:up
master_last_io_seconds_ago:10
master_sync_in_progress:0
db0:key=1,expires=0
redis 127.0.0.1:6379>
        里面的role会显示是Master还是Slave服务器,master_link_status的值是up表示正在连接Master服务器。
 
说明:本文是我网上学习LAMP兄弟连李捷老师《NoSQL数据库之Redis数据库管理》的学习笔记。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-316017-1-1.html 上篇帖子: 如何批量删除redis中keys 下篇帖子: 【Redis三】基于Redis sentinel的自动failover主从复制
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表