搜索
首页数据库mysql教程【Redis3】Redis数据库的学习与实践—Redis的常用命令及高级应用

keys * keys my* #存在返回1 127.0.0.1:6379 exists name (integer) 1 #不存在返回0 127.0.0.1:6379 exists you (integer) 0 127.0.0.1:6379 del name (integer) 1 127.0.0.1:6379 del you (integer) 0 127.0.0.1:6379 expire name 10 (integer) 1 127.0.0.1

  • keys *
  • keys my*
  • #存在返回1
  • 127.0.0.1:6379> exists name
  • (integer) 1
  • #不存在返回0
  • 127.0.0.1:6379> exists you
  • (integer) 0
  •  
  • 127.0.0.1:6379> del name
  • (integer) 1
  • 127.0.0.1:6379> del you
  • (integer) 0
  • 127.0.0.1:6379> expire name 10
  • (integer) 1
  • 127.0.0.1:6379> get name
  • "inter"
  • 127.0.0.1:6379> get name
  • "inter"
  • 127.0.0.1:6379> get name
  • "inter"
  • 127.0.0.1:6379> get name
  • (nil)
  • 127.0.0.1:6379> select 0
  • OK
  • 127.0.0.1:6379> set sex boy
  • OK
  • 127.0.0.1:6379> get sex
  • "boy"
  • 127.0.0.1:6379> move sex 1
  • (integer) 1
  • 127.0.0.1:6379> get sex
  • (nil)
  • 127.0.0.1:6379> select 1
  • OK
  • 127.0.0.1:6379[1]> get sex
  • "boy"
  • 127.0.0.1:6379> expire name 300
  • (integer) 1
  • 127.0.0.1:6379> ttl name
  • (integer) 296
  • 127.0.0.1:6379> persist name
  • (integer) 1
  • 127.0.0.1:6379> ttl name
  • (integer) -1
  • 127.0.0.1:6379> randomkey
  • "name"
  • 127.0.0.1:6379> set name hello
  • OK
  • 127.0.0.1:6379> rename name you
  • OK
  • 127.0.0.1:6379> get you
  • "hello"
  • 127.0.0.1:6379> type you
  • string
  • #输入ping返回pong,说明网络连接成功
  • #返回could not connect to Redis at 127.0.0.1:6379:Connection refused 说明网络连接不成功
  • 127.0.0.1:6379> ping
  • PONG
  • 127.0.0.1:6379> echo you
  • "you"
  • 127.0.0.1:6379> select 10
  • OK
  • 127.0.0.1:6379[10]>
  • 127.0.0.1:6379> quit
  • djy@ubuntu:~/toolkit/redis/src$
  • 127.0.0.1:6379> dbsize
  • (integer) 2
  • 127.0.0.1:6379>
  • 127.0.0.1:6379> info
  • # Server
  • redis_version:2.8.13
  • redis_git_sha1:00000000
  • redis_git_dirty:0
  • redis_build_id:b762f6d0aafec306
  • redis_mode:standalone
  • os:Linux 3.8.0-19-generic x86_64
  • arch_bits:64
  • multiplexing_api:epoll
  • gcc_version:4.7.3
  • process_id:28321
  • run_id:8ebdbe81c7153e1e6bd0979d365ca9c8480f8c9f
  • tcp_port:6379
  • uptime_in_seconds:2155
  • uptime_in_days:0
  • hz:10
  • lru_clock:15851433
  • config_file:/home/djy/toolkit/redis/redis.conf
  • 127.0.0.1:6379> config get save
  • 1) "save"
  • 2) "900 1 300 10 60 10000"
  • 127.0.0.1:6379>
  • 127.0.0.1:6379> keys *
  • 1) "name"
  • 2) "you"
  • 3) "sex"
  • 4) "new_name"
  • 127.0.0.1:6379> flushdb
  • OK
  • 127.0.0.1:6379> keys *
  • (empty list or set)
  • #进入redis文件夹,修改redis.conf文件
  • #requirepass foobared
  • requirepass djy
  •  
  • #之后进入客户端,操作redis数据库的时候,要进行授权操作
  • auth djy
  • #或者在进入客户端的时候,输入
  • redis-cli –a djy

Redis数据库的学习与实践—Redis的常用命令及高级应用

一:Redis的常用命令

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

1:键值相关命令。

(1)keys
返回满足给定pattern的所有Key;
(2)exists
确认一个key是否存在;
(3)del
删除一个key;
(4)expire
设置一个key的过期时间;
(5)move
将当前数据库中的key转移到其他数据库当中;
(6)persist
移除给定key的过期时间;
(7)randomkey
随机返回key空间的一个key;
(8)rename
重命名key;
(9)type
返回值的类型。

2:服务器相关命令。

(1)ping
测试连接是否存活;
(2)echo
在命令行打印内容;
(3)select
选择数据库,Redis数据库编号从0~15,我们可以选择任意一个数据库来进行数据的存取;
(4)quit
退出连接;
(5)dbsize
(6)info
redis服务器的信息;
(7)configget
实时转储收到的请求,返回相关配置的参数;
(8)flushdb
删除当前选择数据库中的所有key;
(9)flushall
删除所有数据库中的所有key;

二:Redis高级实用特性

(1)安全性

设置客户端连接后进行任何其他指定前需要使用的密码。
警告:因为redis速度相当快,所以在一台比较好的服务器下,一个外部的用户可以在一秒钟进行150k次的密码尝试,这意味着你需要指定非常非常强大的密码来防止暴力破解。
(2)主从复制
Redis主从复制配置和使用都非常简单。通过主从复制可以允许多个slave server拥有和master server 相同的数据库副本。

特点:

Master可以拥有多个slave;

多个slave可以连接同一个master,还可以连接到其他slave;

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

提高系统的伸缩性。

主从复制过程:

Slave与master建立连接,发送sync同步命令

Master会启动一个后台进程,将数据库快照保存到文件中,同时master住进程会开始收集新的写命令并缓存。

后台完成保存后,就将此文件发送给slave

Slave将此文件保存到硬盘上

配置主从服务器

在slave的配置文件(redis.conf)中加入以下配置:

slaveof 192.168.1.1 6379 #指定master的ip和端口

masterauth lamp #这是主机的密码

#设置完成后,可以通过info命令来查看主从信息(role:master/slave)

(3)事务处理

Redis对事务的支持目前还比较简单。Redis只能保证一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令。当一个client在一个连接中发出multi命令时,这个连接会进入一个事务上下文,该连接后续的命令不会立即执行,而是先放到一个队列中,当执行exec命令时,redis会顺序的执行队列中的所有命令。

简单事务处理: 

127.0.0.1:6379> get age

"30"

127.0.0.1:6379> multi

OK

127.0.0.1:6379> set age 10

QUEUED

127.0.0.1:6379> set age 20

QUEUED

127.0.0.1:6379> exec

1) OK

2) OK

127.0.0.1:6379> get age

"20"

取消一个事务:

127.0.0.1:6379> get age

"20"

127.0.0.1:6379> multi

OK

127.0.0.1:6379> set age 30

QUEUED

127.0.0.1:6379> set age 50

QUEUED

127.0.0.1:6379> discard

OK

127.0.0.1:6379> get age

"20"

Redis事务的缺陷,通常来说,事务中的每一个事务都要执行成功,事务里的所有操作才会生效。但是Redis事务的缺陷就是,当事务中的操作,有一个没有成功的时候,另外一个操作照样成功。这样事务在某一个操作错误的时候,没有了回滚的机制,这是有待改进的地方。

乐观锁:复杂事务控制

大多是基于数据版本(version)的记录机制实现的。即为数据增加一个版本表示,在基于数据库表的版本解决方案中,一般是通过为数据库表添加一个“version”字段来实现读取出数据时,将此版本号一同读出,之后更新时,对此版本号加1。此时,将提交数据的版本号与数据库表对应记录的当前版本号进行比对,如果提交的数据版本号大于数据库当前版本号,则予以更新,否则认为是过期数据。

Redis乐观锁实例:

假设有一个age的key,我们开2个session来对age进行赋值操作,我们来看一下结果。

#第一步session1

127.0.0.1:6379> get age

"20"

127.0.0.1:6379> watch age

OK

127.0.0.1:6379> multi

OK

#第二步session2

127.0.0.1:6379> set age 30

OK

127.0.0.1:6379> get age

"30"

#第三步session1

127.0.0.1:6379> set age 20

QUEUED

127.0.0.1:6379> exec

(nil)

127.0.0.1:6379> get age

"30"

Watch命令会见识给定的key,当exec时,如果监视的key从调用watch后发生过变化,则整个事务会失败。也可以调用watch多次监视多个key。这样就可以对指定的key加乐观锁了。注意watch的key是对整个连接有效的,事务也一样。如果连接断开,监视和事务都会被自动清除。当然了exec,discard,unwatch命令都会清除连接中的所有监视。

(4)持久化机制

Redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到硬盘来保证持久化。

Redis支持两种持久化方式:snapshotting(快照)也是默认方式;Append-only file(缩写aof)的方式。

(5)发布订阅消息

发布订阅(pub/sub)是一种消息通信模式,主要的目的是接触消息发布者和消息订阅者之间的耦合,Redis作为一个pub/sub的server,在订阅者和发布者之间起到了消息路由的功能。订阅者可以通过subscribe和psubscribe命令向redis server订阅自己感兴趣的消息类型,redis将信息类型称为通道(channel)。当发布者通过publish命令向redis server发送特定类型的信息时,订阅该信息类型的全部client都会受到此消息。

(6)虚拟内存的使用

Redis的虚拟内存与操作系统的虚拟内存不是一回事,但是思路和目的都是相同的。都是暂时把不经常访问的数据从内存交换到磁盘中,从而腾出宝贵的内存空间用于其他需要访问的数据。尤其是对于redis这样的内存数据库,内存总是不够用的。除了可以将数据分割到多个redisserver外。另外能够提高数据库容量的办法就是使用虚拟内存把那些不经常访问的数据交换到磁盘上。

Vm-enabled yes #开启vm功能

Vm-swap-file /tmp/redis.swap #交换出来的value保存的文件路径

Vm-max-memory 1000000 #redis使用的最大内存上限

Vm-page-size 32 #每个页面的大小32字节

Vm-pages 13417728 #最多使用多少页面

Vm-max-threads4 #用于执行value对象换入患处的工作线程数量

注:Redis系列博客均是结合兄弟连Redis学习视频的笔记和自己的实践总结而成。

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
es和redis区别es和redis区别Jul 06, 2019 pm 01:45 PM

Redis是现在最热门的key-value数据库,Redis的最大特点是key-value存储所带来的简单和高性能;相较于MongoDB和Redis,晚一年发布的ES可能知名度要低一些,ES的特点是搜索,ES是围绕搜索设计的。

一起来聊聊Redis有什么优势和特点一起来聊聊Redis有什么优势和特点May 16, 2022 pm 06:04 PM

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了关于redis的一些优势和特点,Redis 是一个开源的使用ANSI C语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式存储数据库,下面一起来看一下,希望对大家有帮助。

实例详解Redis Cluster集群收缩主从节点实例详解Redis Cluster集群收缩主从节点Apr 21, 2022 pm 06:23 PM

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis Cluster集群收缩主从节点的相关问题,包括了Cluster集群收缩概念、将6390主节点从集群中收缩、验证数据迁移过程是否导致数据异常等,希望对大家有帮助。

Redis实现排行榜及相同积分按时间排序功能的实现Redis实现排行榜及相同积分按时间排序功能的实现Aug 22, 2022 pm 05:51 PM

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis实现排行榜及相同积分按时间排序,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,希望对大家有帮助。

详细解析Redis中命令的原子性详细解析Redis中命令的原子性Jun 01, 2022 am 11:58 AM

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了关于原子操作中命令原子性的相关问题,包括了处理并发的方案、编程模型、多IO线程以及单命令的相关内容,下面一起看一下,希望对大家有帮助。

一文搞懂redis的bitmap一文搞懂redis的bitmapApr 27, 2022 pm 07:48 PM

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了bitmap问题,Redis 为我们提供了位图这一数据结构,位图数据结构其实并不是一个全新的玩意,我们可以简单的认为就是个数组,只是里面的内容只能为0或1而已,希望对大家有帮助。

实例详解Redis实现排行榜及相同积分按时间排序功能的实现实例详解Redis实现排行榜及相同积分按时间排序功能的实现Aug 26, 2022 pm 02:09 PM

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis实现排行榜及相同积分按时间排序,本文通过实例代码给大家介绍的非常详细,下面一起来看一下,希望对大家有帮助。

redis error什么意思redis error什么意思Jun 17, 2019 am 11:07 AM

redis error就是redis数据库和其组合使用的部件出现错误,这个出现的错误有很多种,例如Redis被配置为保存数据库快照,但它不能持久化到硬盘,用来修改集合数据的命令不能用。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。