redis-小用
1、redis之flushall、flushdb‘尴尬’操作恢复
redis是基于内存的一种高效数据库,在内存中高效但是不安全,重启和断电都会导致数据丢失。所以就需要用到数据的持久化,redis有两种持久化的方式:AOF和RDB,AOF是将所有执行的命令记录在appendonly.aof文件中,可能会影响redis的性能(写入量”特别特别特别“大的时候)。但是AOF可以保证数据丢失最少。并且如果误操作执行了flushall也可以恢复。RDB是直接将数据持久化到dump.rdb文件,是一个二进制文件。写入速度快,但是故障期间未持久化的数据都丢失了,并且如果没有备份dump.rdb文件的话,执行flushall数据就无法恢复了。至于使用自行根据业务场景来决定。如果两个都是用,则redis会优先使用AOF。
2、执行flushall
不小心误操作,执行了flushall,如果开启了AOF模式的持久化,不要进行其他的操作,立刻断开当前连接的redis或切到其他的节点,然后执行如下操作:
>shutdown nosave
然后kill调redis进程:
# pkill redis
到存放appenonly.aof文件的目录,然后编辑此文件,找到flushall这一行,并删除:
#vim appendonly.aof
$1
0
*2
$6
SELECT
$1
0
*1
$8
FLUSHALL
#sed -i 's/FLUSHALL//g' appendonly.aof
#sed -i 's/FLUSHDB//g' appendonly.aof
然后重启redis,登录就可以看到之前的数据就恢复了。
3、为了防止这种误操作,可以禁止flushall
#vim redis.conf
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command KEYS ""
测试环境可以不用做,KEYS主要是防止如果数据库里面key的数量巨大的话会导致redis收到严重影响。
4、redis认证
#vim redis.conf
requirepass "Test@123"
连接命令:
#redis-cli -h 192.168.1.201 -p 6379 -a "Test@123"
5、手动持久化
有两个手动持久化的命令:save、bgsave,save会阻塞当前redis的读写,bgsave是在后台进行持久化,不会造成阻塞。
#redis-cli -h 192.168.1.201 -p 6379 -a "Test@123"
192.168.1.201:6379>bgsave
6、redis简单的数据迁移
以RDB为例:
首先准备好一个干净的redis服务,配置完毕,指定好dir,如dir /data/redis
正在运行的redis上最好先停止对redis的写操作,如果不能停止redis的读写,那就需要操作的快一些,减少数据的丢失,:
先连接redis:
#redis-cli -h 192.168.1.201 -p 6379 -a "Test@123"
>bgsave
将dump.rdb文件copy到新的redis的数据目录即/data/redis目录下:
#scp dump.rdb root@192.168.1.10:/data/redis
#redis-server redis.conf
检查数据:
如果数据都存在0库
>SELECT 0
>DBSIZE
和之前的对比一下。或者直接查一下key,确定某个key是否存在。
7、Hashmap
Redis Hash对应Value内部实际就是一个HashMap,实际这里会有2种不同实现,这个Hash的成员比较少时Redis为了节省内存会采用类似一维数组的方式来紧凑存储,而不会采用真正的HashMap结构,对应的value redisObject的encoding为zipmap,当成员数量增大时会自动转成真正的HashMap,此时encoding为ht
应用场景:
HDEL
HDEL key field[field...] 删除对象的一个或几个属性域,不存在的属性将被忽略HEXISTS
HEXISTS key field 查看对象是否存在该属性域HGET
HGET key field 获取对象中该field属性域的值HGETALL
HGETALL key 获取对象的所有属性域和值HKEYS
HKEYS key 获取对象的所有属性字段HVALS
HVALS key 获取对象的所有属性值HLEN
HLEN key 获取对象的所有属性字段的总数HMGET
HMGET key field[field...] 获取对象的一个或多个指定字段的值HSET
HSET key field value 设置对象指定字段的值HMSET
HMSET key field value [field value ...] 同时设置对象中一个或多个字段的值HSTRLEN
HSTRLEN key field 返回对象指定field的value的字符串长度,如果该对象或者field不存在,返回0.HSCAN
HSCAN key cursor [MATCH pattern] [COUNT count] 类似SCAN命令
8、keyspace notification
redis2.8版本以后,Keyspace Notifications 此特性允许客户端可以以 订阅/发布(Sub/Pub)模式,接收那些对数据库中的键和值有影响的操作事件
修改redis.conf,添加如下内容:
notify-keyspace-events "Ex"
然后重启生效。
也可以在客户端执行如下命令:
参数解释:
# K Keyspace events, published with __keyspace@<db>__ prefix.
# E Keyevent events, published with __keyevent@<db>__ prefix.
# g Generic commands (non-type specific) like DEL, EXPIRE, RENAME, ...
# $ String commands
# l List commands
# s Set commands
# h Hash commands
# z Sorted set commands
# x Expired events (events generated every time a key expires)
# e Evicted events (events generated when a key is evicted for maxmemory)
# A Alias for g$lshzxe, so that the "AKE" string means all the events.
redis-小用的更多相关文章
- 【redis 学习系列08】Redis小功能大用处02 Pipeline、事务与Lua
3.Pipeline 3.1 Pipeline概念 Redis客户端执行一条命令分为如下四个过程: (1)发送命令 (2)命令排队 (3)命令执行 (4)返回结果 其中(1)和(4)称为Round T ...
- 【redis 学习系列07】Redis小功能大用处01 慢查询分析以及Redis Shell
Redis提供了5种数据结构已经足够强大,但除此之外,Redis还提供了诸如慢查询分析.功能强大的Redis Shell.Pipeline.事务与Lua脚本.Bitmaps.HyperLogLog.发 ...
- Java操作Redis小案例
1.下载jar包. http://download.csdn.net/detail/u011637069/9594840包含本案例全部代码和完整jar包. 2.连接到redis服务. package ...
- Redis 小调研
一. 概况: Redis是一款开源的.网络化的.基于内存的.可进行数据持久化的Key-Value存储系统.它的数据模型建立在外层,类似于其它结构化存储系统,是通过Key映射Value的方式来建立字典以 ...
- redis小功能大用处-bitmaps
- 妈妈再也不用担心别人问我是否真正用过redis了
1. Memcache与Redis的区别 1.1. 存储方式不同 1.2. 数据支持类型 1.3. 使用底层模型不同 2. Redis支持的数据类型 3. Redis的回收策略 4. Redis小命令 ...
- Redis的字典(dict)rehash过程源代码解析
Redis的内存存储结构是个大的字典存储,也就是我们通常说的哈希表.Redis小到能够存储几万记录的CACHE,大到能够存储几千万甚至上亿的记录(看内存而定),这充分说明Redis作为缓冲的强大.Re ...
- Redis持久化的方式
Redis小知识: redis是键值对的数据库,有5中主要数据类型: 字符串类型(string),散列类型(hash),列表类型(list),集合类型(set),有序集合类型(zset) Redis持 ...
- 缓存服务—Redis
Redis 简介Redis 是一个开源(BSD 许可)的.内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 为什么要用 Redis 在高并发场景下,如果需要经常连接结果变动频繁的数据库, ...
- redis 3.2 新数据结构:quicklist、String的embstr与raw编码方式分界点
Redis3.2.0引入了新的quicklist的数据结构做了list的底层存储方案.废弃了原来的两个配置参数, list-max-ziplist-entries list-max-ziplist-v ...
随机推荐
- output.php
<?php /** * */ class Output { function __construct() { $this->_zlib_oc = @ini_get('zlib.output ...
- python_运算符与表达式
运算符与表达式 python运算符 运算符 功能说明 + 算术加法,列表.元组.字符串合并与连接,正号 - 算术减法,集合差集,相反数 * 算术乘法,序列重复 / 真除法 // 求整商,但如果操作数中 ...
- Git 安装 windows && linux
一.安装: windows下安装Git: 1.下载Git:https://git-scm.com/download/win 2.安装Git:默认安装,一直回车 Linux下安装Git: yum安装: ...
- rsync+sersync+inotify实现服务器间文件同步之一
rsync+sersync+inotify实现服务器间文件同步之一:rsync安装配置 2013年12月14日 ⁄ Linux管理, 服务器集群技术 ⁄ 共 4925字 ⁄ rsync+sersync ...
- unigui web app之菜单
unigui web app之菜单 拖放TUnimMenu控件到窗体上. side:=msleft 表示将在左边显示菜单. 菜单项属性 UnimMenu1.Visible := True;显示菜单 U ...
- 定时任务 Wpf.Quartz.Demo.4
本文继续介绍定时任务 Wpf.Quartz.Demo.3的一些小细节, 代码也请前往第3节下载. 1.RichTextBox右键菜单 <RichTextBox.ContextMenu> ...
- python做数据分析pandas库介绍之DataFrame基本操作
怎样删除list中空字符? 最简单的方法:new_list = [ x for x in li if x != '' ] 这一部分主要学习pandas中基于前面两种数据结构的基本操作. 设有DataF ...
- 背水一战 Windows 10 (48) - 控件(集合类): FlipView
[源码下载] 背水一战 Windows 10 (48) - 控件(集合类): FlipView 作者:webabcd 介绍背水一战 Windows 10 之 控件(集合类) FlipView 示例Fl ...
- ThinkPHP5代码执行的简单分析
漏洞影响版本: ThinkPHP 5.0.5-5.0.22 ThinkPHP 5.1.0-5.1.30 漏洞复现: 一.mac的debug环境搭建. 一键化环境搭建工具: mamp pro ,调试工具 ...
- system表空间空间不足解决办法
场景描述: 系统表空间空间不足,导致应用无法正常连接!!! 环境描述: ORACLE 11G 查看当前表空间的整体使用情况,以及有没有开启自动扩展,以及扩展的最大限制!!! ---tablespace ...