目录
[3.2.2 Hash](#3.2.2 Hash)
[3.2.3 List](#3.2.3 List)
[3.2.4 Set](#3.2.4 Set)
[3.2.5 sorted_set](#3.2.5 sorted_set)
前言
由于关系型数据库本身存在性能瓶颈和扩展困难的问题,导致系统在面对高并发访问时越来越力不从心。这个时候,出现了一种全新的数据库设计理念,也就是使用非关系型数据库,仅存储数据,不存储关系。下文将详细介绍一种非关系型数据库:Redis
一、Redis是什么?
Redis(REmote DIctionary Server)是一款用C语言开发的一个开源高性能键值对(key-value)数据库。该数据库内部采用单线程机制进行工作且在该中线程机制下依然能保持良好的性能,官方提供测试数据表示50个并发下,执行100000 个请求,读的速度是110000 次/s,写的速度是 81000次/s。
二、下载与安装
1.下载
Linux 版 (适用于企业级开发)
- Redis 高级开始使用
- 以4.0 版本作为主版本
Windows 版本 (适合零基础学习)
- Redis 入门使用 以 3.2 版本作为主版本
- 下载地址:https://github.com/MSOpenTech/redis/tags` `
2.安装
Redis压缩文件夹解压即安装
3.启动Redis
服务器启动
**方式1:**双击redis-server.exe
**方式2:**指令redis-server.exe redis.windows.con


客户端连接
三、Redis操作
3.1基本操作
添加数据
命令:set key value
例如:set person teacher

查询信息
命令:get key

清空屏幕
命令:clear
帮助
命令:help 命令名称

退出客户端命令行
命令:quit exit
3.2五种常用数据类型
|------------|-------------|
| string | String |
| hash | HashMap |
| list | LinkedList |
| set | HashSet |
| sorted_set | TreeSetuiuu |
3.2.1.string
- 存储的数据:单个数据,最简单的数据存储类型,也是最常用的数据存储类型
- 存储数据的格式:一个存储空间保存一个数据
- 存储内容:通常使用字符串,如果字符串以整数的形式展示,可以作为数字操作使用
基础命令
set key value===>添加修改数据
get key===>获取
del key ===>删除
mset key value key value...===>批量添加
mget key key key...===>批量获取
strlen key===>获取数据长度

getrange key 位置 位置===>获取指定key的位置数据

setrange key index value===>修改部分值
getset key value===>修改值,并返回原数据

数值型数据

如果想要利用decrby给一个正值,只需要给一个负的value即可
具有生命周期的数据
setex key seconds value===>设置键的过期时间
ttl key ===>查看key的剩余时间

如果某个key已经被实例化出来,这个时候要设置过期时间,可以使用EXPIRE key seconds命令

3.2.2 Hash
- 存储需求:对一系列存储的数据进行编组,方便管理,典型应用存储对象信息
- 存储结构:一个存储空间保存多个键值对数据
- hash类型:底层使用哈希表结构实现数据存储
基础命令
添加/修改数据
**格式:**hset key field value
获取数据
**格式:**hget key field
**格式:**hgetall key
添加/修改多个数据
**格式:**hmset key field1 value1 field2 value2 ...
获取多个数据
**格式:**hmget key field1 field2 ...
获取哈希表中所有的字段名或字段值
**格式:**hkeys key
**格式:**hvals key

获取哈希表中字段的数量
**格式:**hlen key
获取哈希表中是否存在指定的字段
**格式:**hexists key field
设置指定字段的数值数据增加指定范围的值
**格式:**hincrby key field increment
**格式:**hincrbyfloat key field increment

注意事项:
1.hash类型下的value只能存储字符串,不允许存储其他数据类型,不存在嵌套现象。如果数据未获取 到,对应的值为(nil)
2.每个 hash 可以存储 2^32^-1个键值对
3.hash类型十分贴近对象的数据存储形式,并且可以灵活添加删除对象属性。但hash设计初衷不是为了 存储大量对象而设计的,因此不可滥用,更不可以将hash作为对象列表使用 4.hgetall 操作可以获取全部属性,如果内部field过多,遍历整体数据效率就很会低,有可能成为数 据访问瓶颈
3.2.3 List
- 数据存储需求:存储多个数据,并对数据进入存储空间的顺序进行区分
- 存储结构:一个存储空间保存多个数据,且通过数据可以体现进入顺序
- list类型:保存多个数据,底层使用双向链表存储结构实现

基本操作
添加/修改数据
lpush key value1 value2 ......
rpush key value1 value2 ......
获取数据
lrange key start stop
lindex key index
llen key

获取并移除数据
lpop key rpop key

更新操作
lset key 下标 新数据
作用:lset将列表中指定下标的值替换为另外一个值,
如果不存在列表我们去更新就会报错

将某个具体的value插入到列中的某个元素的前面或者后面!
LINSERT mylist before "world" "other"
LINSERT mylist after "world" "other"

注意事项
1.list中保存的数据都是string类型的,数据总容量是有限的,最多2^32^-1个元素 (4294967295)
2.list具有索引的概念,但是操作数据时通常以队列的形式进行入队出队操作,或以栈的形式进行入栈出 栈操作
3.获取全部数据操作结束索引设置为-1
4.list可以对数据进行分页操作,通常第一页的信息来自于list,第2页及更多的信息通过数据库的形式加 载
3.2.4 Set
- 存储需求:存储大量的数据,在查询方面提供更高的效率
- 存储结构:能够保存大量的数据,高效的内部存储机制,便于查询
- set类型:与hash存储结构完全相同,仅存储键,不存储值(nil),并且值是不允许重复的
基本使用
添加数据
sadd key member1 member2
获取全部数据
smembers key
删除数据
srem key member1 member2
获取集合数据总量
scard key
判断集合中是否包含指定数据
sismember key member

3.2.5 sorted_set
基础操作
添加数据
zadd key score1 member1 score2 member2
获取全部数据
zrange key start(开始索引) stop(结束索引) WITHSCORES
注意:WITHSCORES表示 除了数据还 可以显示分值
反转
zrevrange key start stop WITHSCORES
删除数据
zrem key member member ...
获取集合数据总量
zcard key


总结
以上就是今天要讲的内容,本文仅仅简单介绍了Redist的使用,包括Redis下载安装、几种数据类型,以及指令操作方式,感谢收看,哈哈哈哈哈。