search
HomeDatabaseMysql Tutorial【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学习视频的笔记和自己的实践总结而成。

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact 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实现排行榜及相同积分按时间排序功能的实现实例详解Redis实现排行榜及相同积分按时间排序功能的实现Aug 26, 2022 pm 02:09 PM

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

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

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

一起聊聊Redis实现秒杀的问题一起聊聊Redis实现秒杀的问题May 27, 2022 am 11:40 AM

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了关于实现秒杀的相关内容,包括了秒杀逻辑、存在的链接超时、超卖和库存遗留的问题,下面一起来看一下,希望对大家有帮助。

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

Hot Tools

EditPlus Chinese cracked version

EditPlus Chinese cracked version

Small size, syntax highlighting, does not support code prompt function

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft