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服务即可