Redis
Redis数据库的配置与连接
- 解压redis数据库的安装包(建议把解压后的安装包放到磁盘的根目录,方便访问操作)
- 打开【命令行窗口】:win+R
- 在命令行窗口,进入到redis安装目录中
格式一:cd /d redis目录完整路径 跨磁盘切换目录
例:cd /d d:\redis
格式二:
①切换磁盘:磁盘符:
例:切换D盘 D:或者d:
②切换目录:cd 目录名字
例:cd redis
- 启动redis数据库的服务
命令:redis-server.exe redis.windows.conf
mysql端口号:3306,redis端口号:6379
- 连接redis数据库
重新打开一个命令行窗口做连接:进入redis安装目录
命令:redis-cli.exe
- 测试:输入ping命令,得到PONG结果,证明redis数据库的配置与连接是OK的、
回顾
redis数据库配置与安装
- 启动redis数据库的服务:redis-server.exe redis.windows.conf
- 连接redis数据库:redis-cli.exe
1、Redis数据库概述
- NOSQL:不仅仅是SQL,泛指非关系型数据库,是对关系型数据库的一个有力补充,数据的组织方式,大部分都是以【键值对key-value】的形式来存储和管理的,
例:redis:键值对:键名 值------>name "tom" age 18
MongoDB:键值对:键名:值 name:"tom" age:18
关系型数据库:RDBMS
-
redis:远程字典服务,是==开源免费 (开放源代码,配置文件中的参数可以根据实际情况做出修改),基于内存 (数据直接存储在内存),跨平台(可以在多个操作系统使用)==的非关系型Key-Value数据库
-
redis特征:①数据直接加载到内存中存储和管理数据;②支持到的数据类型,以及每一种类型提供的操作命令是较多的;③数据的处理(读写)速度是较快的;④持久化功能:利用生成的持久化文件,可以避免因异常操作引发数据丢失问题,实现数据的还原恢复操作;⑤redis数据库可以设置键值对数据的有效活动时间,一旦过了该时间,就会被系统直接删除;⑥支持事务操作:事务:指的是在当前数据库中一次性并行处理的操作,要么全部执行,要么全部取消------>原子性
2、Redis和MySQL对比
- 类型:redis:非关系型数据库 mysql:关系型数据库
- 数据存储和管理方式(组织方式):redis:键值对 mysql:表
- 数据的存放位置:redis:基于内存 mysql:放在磁盘
- MySQL偏向于【存数据】,redis偏向于【读取数据】
3、Redis支持的数据类型以及操作命令
- redis自带16个数据库,库编号:0-15,默认是在0号库(第一个库)
切换数据库:select 库编号
备注:redis命令学习建议:==redis命令作用;redis命令的语法格式;==redis命令和参数结合作用
- redis数据库的增删改查操作
①set 键名 值 创建/插入键值对数据
②set 键名 新值 修改键中的值
③get 键名 获取键中的值
④del 键名 删除键中的值
-
redis数据库关于键Keys的操作命令
-
exists 键名 判断该键是否存在
-
type 键名 查看该键的数据类型 string:字符串
备注:除了列表,set集合,hash集合,有序集合,其它的数据默认归纳为字符串类型
-
keys 字符模板 查找和该模板匹配的键名 ***** 任意,所有
-
keys * 查找所有的键名
-
randomkey 随机返回一个存在的键
-
rename 旧键名 新键名 对键进行重命名操作
-
dbsize 统计键的总个数
-
expire 键名 时间s 设置键的有效活动时间
-
ttl 键名 获取键的有效活动时间
-
move 键名 库编号 将当前库中的键移动到指定的库
-
flushdb 删除当前库中的所有键
-
flushall 删除所有库中的所有键
-
set 键名 值 ex 时间s 在创建键值对数据的同时,设置有效活动时间
-
exit/quit:退出客户端(断开数据库连接)
-
info 显示redis数据库的属性信息
-
-
Redis数据类型-字符串类型:string
-
string是redis基本的、默认的数据类型
-
提供的操作命令:
- set/get:创建一组键值对数据/获取一个键的值
- mset 键名1 值1 键名2 值2 键名3 值3.... 向库中插入多组键值对数据
- mget 键名1 键名2 键名3... 获取多个键的值
- getset 键名 新值 先获取键中原始的值,再把新值赋值给该键
- setnx 键名 值 添加键值对数据,如果该键存在,则什么都不做
- msetnx 键名1 值1 键名2 值2... 添加多组键值对数据(有一个存在也会影响其它的插入),
- setex 键名 时间s 新值 修改键中的值,并设置有效的活动时间
- incr 键名 让键中的值自动加1
- incrby 键名 自定义数字 指定数字的加法操作
- decr 键名 让键中的值自动减1
- decrby 键名 自定义数字 指定数字的减法操作
- append 键名 新值 将新值拼接在键中原始值的后方(拼凑在一起)
- substr 键名 开始位置的下标 结束位置下标 对键中字符串数据进行截取操作
- setrange 键名 位置下标 新值 得到一个新的字符串(从指定位置开始,拿上新值,替换原始字符串数据,替换范围取决于新字符串长度)
- getrange 键名 开始位置下标 结束位置下标 对键中的字符串进行截取操作 <------>参考substr
- strlen 键名 统计该键中字符串长度
-
回顾
- redis特征
- redis操作命令:作用,格式
-
Redis数据类型-List(列表,链表)
-
概述:列表类型的键,可以存储多个值------>用来插入多个字符串类型的数据值,列表键中是可以有重复的值
-
List列表提供的操作命令:
-
lpush 键名 值1 值2 值3... 创建或从列表的头部插入数据(先写的数据在下边)
-
rpush 键名 值1 值2 值3... 创建或从列表的尾部插入数据(先写的数据在上边)
-
lrange 键名 开始位置下标 结束位置下标 查看列表键中范围之内的数据值
-
llen 键名 统计列表键中值的总个数
-
lindex 键名 位置下标 根据下标获取对应位置上的值
-
lset 键名 位置下标 新值 根据下标修改指定位置上的值
-
lrem 键名 数量 值 从列表键中删除指定数量的相同值
-
lpop 键名 返回并删除键中头部元素值
-
rpop 键名 返回并删除键中尾部元素值
-
linsert 键名 before 指定元素值 新值 在指定元素值的前面插入新的值
-
linsert 键名 after 指定元素值 新值 在指定元素值的后面插入新的值
-
ltrim 键名 开始位置的下标 结束位置的下标
备注:键中只保留截取后的数据
-
-
-
Redis数据类型-Set集合:存放多个字符串类型的数据值,唯一,无序
set集合类型提供的操作命令:
①sadd 键名 值1 值2 值3... #创建/向set集合键中插入数据
②smembers 键名 #返回键中所有的值
③srem 键名 值 #从该键中删除指定的数据值
④spop 键名 #返回并删除键中的一个值
⑤smove 键名1 键名2 值 #将键名1的值移动到键名2
⑥scard 键名 #统计键中值的总个数
⑦sismember 键名 值 #检测该值是否存在于集合中
⑧sinter 键名1 键名2 键名3... 求#交集,把这些集合键中共有的数据显示出来
⑨sinterstore 新的键名 键名1 键名2 键名3... #求交集保存在新的集合键中
⑩sunion 键名1 键名2 键名3... #求并集,这些集合中的数据融合在一起显示:相同的保留一个,不同的直接融合
⑪sunionstore 新的键名 键名1 键名2 键名3... #求并集,保存在新的键中
⑫sdiff 键名1 键名2... #求差集,键名1中值减去键名2中共有的,把剩下独有的数据显示
⑬sdiffstore 新的键名 键名1 键名2... #求差集,并保存在新的键中
⑭srandmember 键名 #随机返回键中的一个值
- Redis数据类型-Hsah集合:存放【键值对】数据集合,每一个hash键中,存储的值都是【键值对】,hash:哈希
- hash类型提供的操作命令:
- hset 键名 字段名(key) 字段值(value) #生成hash类型集合的键,并存入值
- hmset 键名 字段名1 字段值1 字段名2 字段值2 字段名3 字段值3... #生成hash类型的键,并存入多组值
- hget 键名 字段名 #获取键中某个字段的值
- hmget 键名 字段名1 字段名2 字段名3... #获取多个字段值
- hgetall 键名 #获取键中所有的字段以及字段值
- hincrby 键名 字段名 增加值 #将键中指定字段中存储的值进行加法操作
- hexists 键名 字段名 #检测该字段是否存在于键中
- hdel 键名 字段名 #删除该键中的字段
- hlen 键名 #统计该键中字段的总个数
- hkeys 键名 #获取键中所有的字段名
- hvals 键名 #获取键中所有的字段值
- redis数据类型-有序集合:zset,用来存储多个字符串类型的数据的集合,通过每一个值关联一个分数,然后利用分数达到排序的效果(升序:从小到大)唯一
- 有序集合提供的操作命令:
- zadd 键名 分数1 值1 分数2 值2 分数3 值3... #生成有序集合类型的键并存入值
- zrange 键名 开始位置下标 结束位置下标 #查看键中的所有值
- zrevrange 键名 开始位置下标 结束位置下标 #降序查看键中的数据
- zcard 键名 #统计该键中值的总个数
- zcount 键名 最低分 最高分 #根据分数区间统计值的数量
- zincrby 键名 增加的分数值 值 #给该值进行分数的增加
- zrank 键名 值 #返回该值对应的下标(下标算法:把最小的值看成是第一个元素)
- zrevrank 键名 值 #返回该值对应的下标(下标算法:把最大的值看成是第一个元素)
- zscore 键名 值 查看该值对应的分数
- zrem 键名 值1 值2... #删除键中的数据
- zscan 键名 游标值(0) 查看键中所有的值以及关联的分数
- zremrangebyscore 键名 最低分 最高分 #删除分数区间内的数据
4、事务的操作
- 概述::事务指的是一次可以执行多个操作命令------>把对应的操作命令都放在事务中,一旦执行事务,就会把事务中所包含的所有操作命令全部执行。
备注:在没有事务介入前,每一个命令都是一个一个执行的
- 事务的创建流程:
事务从开始到执行会经历三个阶段:
开始事务----->multi
命令入队------>各种操作命令
执行事务------>exec
备注:redis数据库"事务",并没有真正做到原子性------>"伪事务"(低版本的)
5、Redis数据库的备份与恢复
- 数据库备份操作:
save 备份完成后,生成一个dump.rdb文件,放在redis的安装目录
备注:有时候备份完成后,找不到或不清楚该文件存在的路径(redis的安装目录):config get dir
- 数据库还原/恢复操作:
只需要把dump.rdb文件,放入到redis目录下,重启redis服务即可