Redis命令与优化

1.数据库

sql结构化数据库:里面存储的数据类型是结构化数据。别称:关系型数据库
nosql非结构化数据库:里面存储的数据类型是非结构化数据。别称:非关系型数据库
分类依据:
结构化数据:方便通过二维表格形式表述这个数据
非结构化数据:不方便以二维表格的形式表述的这种类型的数据、

非关系型数据库产生背景

High performance–对数据库高并发读写需求
Huge Storage–对海量数据高效存储与访问需求
High Scalability && High Availability–对数据库高可扩展性与高可用性需求

Redis概述

Redis基于内存运行并支持持久化
采用key-value(键值对)的存储形式
优点:
具有极高的数据读写速度
支持丰富的数据类型
支持数据的持久化
原子性
支持数据备份

2.安装Redis

tar -zxvf redis-5.0.4.tar.gz 
make && make PREFIX=/usr/local/redis install
ln -s /usr/local/redis/bin/* /usr/bin/
cd redis-5.0.4/utils/
./install_server.sh		
//修改配置文件
vi /etc/redis/6379.conf
bind 127.0.0.1 20.0.0.13
port 6379		
daemonize yes		
pidfile /var/run/redis_6379.pid		
loglevel notice		
logfile /var/log/redis_6379.log		
dir /var/lib/redis/6379	
//连接redis数据库
redis-cli

2.Redis支持的数据类型

2.1 String
  • string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value
  • string类型是二进制安全的,意思是redis的string可以包含任何数据,比如jpg图片或者序列化对象
  • string类型是redis最基本的数据类型,string类型的值最大能存储512M
    在这里插入图片描述
2.2 Hash

Redis hash是一个键值(key=>value)对集合
Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象
场景:存储、读取、修改用户属性
在这里插入图片描述

2.3 List

Redis列表是简单的字符串列表,按照插入顺序,可以添加一个元素到列表的头部(左边)或者尾部(右边)

lpush list1 1 	#插入到List最左侧
lpush list1 2
lpush list1 3
lpush list1 4
lien list1		//查看List长度
4
rpop list1		//弹出最右侧的值
1
lpop list1		//弹出最左侧的值
4
rpush list1 5		//插入到List最右侧
2.4 Set

Redis的set是string类型的无序集合


sadd set1 1	//向set中插入一个值,插入成功返回1,不成功返回0
1
sadd set1 2
1
sadd set1 2 //因为set集合中已有一个值为2
0
scard set1		//查看集合长度
2
sismember set1 1		//查看是否已有“1”
1
sismember set1 3		//没有则返回0
0
srem set1 1	//删除集合中的数
2.5 zset

Redis zset和set一样也是string类型元素的集合,且不允许重复的值
不同的是每个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行从小到大的排序
zset的成员是唯一的,但score却可以重复

3. 多数据库

3.1 keys命令

使用keys命令可以取符合规则的键值列表

set aa 1
set bb 2
set cc 3
set aaaa 4
keys *		#查看当前数据库中所有键
1)aa
2)bb
3)cc
4)aaaa
keys aa*		#查看当前数据库中以k开头的所有键
1)aa
2)aaaa
keys a?	#查看当前数据库中以v开头并只跟了一个参数的键
1)aa
3.2 del
keys *
1)aa
2)bb
3)cc
4)aaaa
del bb	
1
get bb
(nil)
3.3 flushdb 清空数据库数据

redis数据库的数据删除主要分为两个部分:1,清空当前数据库数据,2,使用flushdb清空所有数据库数据

flushdb		
ok	
3.4 move 多数据库移动

redis数据库提供了一个move命令,可以进行多数据库的数据移动

select 0		//使用数据库0
get aa
move aa 1	#将数据库0中的aa移动到数据库1中
get aa	
select 1   //使用数据库1
get aa		
"1"
3.5 rename 重命名

rename命令是对已有key进行重命名,格式为rename 源key 目标key,使用rename进行重命名时,无论目标key是否存在都进行重命名,且源key的值会覆盖目标key的值,在实际使用过程中,建议先用exists命令查看目标key是否存在,再决定是否重命名,以避免覆盖数据

keys a*
1)aa
2)aaaa
get aa
1
rename aa ab
keys v*
1)ab
2)aaaa
get ab
1

type 查看value值类型
使用type可以获取key对应的value值类型

type cc
string	

4.持久化

概述
  • Redis是运行在内存中,内存中的数据断电丢失
    为了能够重用Redis数据,或者放置系统故障,需要将Redis中的数据写入到磁盘空间中,即持久化
  • 持久化分类
    RDB:创建快照的方式获取某一时刻Redis中所有数据的副本
    AOF:将执行的写命令写到文件的末尾,以日志的方式来记录数据的变化
  • 触发条件
    在指定的时间间隔内,执行指定次数的写操作(配置文件控制)
    执行save或bgsave(异步)命令
    执行flushall命令,清空数据库所有数据
    执行shutdown命令,保证服务器正常关闭且不丢失任何数据
RDB持久化

通过RDB文件恢复数据,将dump.rdb文件拷贝到redis的安装目录的bin目录下,重启redis服务即可

vi /etc/redis/6379.conf
save 900 1   	
save 300 10  	
save 60 10000 
dbfilename dump.rdb  
dir /var/lib/redis/6379  
rdbcompression yes   
AOF持久化

根据AOF文件恢复数据,将appendonly.aof文件拷贝到Redis安装目录的bin目录下,重启Redis服务即可

vi /etc/redis/6379.conf
appendonly yes  
appendfilename "appendonly.aof"  
#appendfsync always     
appendfsync everysec  
#appendfsync no    
aof-load-truncated yes   
AOF重写
  • AOF的重写机制
  1. AOF的工作原理是将写操作追加到文件中,问价你的冗余内容会越来越多
  2. 当AOF文件的大小超过所设定的阈值时,Redis就会对AOF文件的内容压缩
  • AOF重写的原理
    Redis会fork出一条新进程,读取内存中的数据(并没有读取旧文件),并重新写到一个临时文件中,最后替换旧的aof文件
vi /etc/redis/6379.conf 
no-appendfsync-on-rewrite no	
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值