目录
1.1 NOSQL
NoSQL(NoSQL = Not Only SQL),意即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系型的数 据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并 发的SNS类型,web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据 库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多 重数据种类带来的挑战,尤其是大数据应用难题。
1.2 什么是Redis
概念:Redis (REmote DIctionary Server) 是用 C 语言开发的一个开源的高性能键值对(key-value)数 据库
特征:
-
数据间没有必然的关联关系
-
内部采用单线程机制进行工作
-
高性能,官方提供测试数据,50个并发执行100000 个请求,读的速度是110000 次/s,写的速度是 81000次/s。
-
多数据类型支持 字符串类型 string 列表类型 list 散列类型 hash 集合类型 set 有序集合类型 sorted_set
-
持久化支持。可以进行数据灾难恢复
二.Redis 的下载与安装
2.1 Redis 的下载
Linux 版 (适用于企业级开发) Redis 高级开始使用 以4.0 版本作为主版本 Windows 版本 (适合零基础学习) Redis 入门使用 以 3.2 版本作为主版本 下载地址:Tags · microsoftarchive/redis · GitHub
2.2 安装 Redis
核心文件:
redis-server.exe 服务器启动命令
redis-cli.exe 命令行客户端
redis.windows.conf redis核心配置文件
redis-benchmark.exe 性能测试工具
redis-check-aof.exe AOF文件修复工具
redis-check-dump.exe RDB文件检查工具(快照持久化文件)
2.3 启动 Redis
服务器启动
方式1:双击redis-server.exe
方式2:指令redis-server.exe redis.windows.conf
三.Redis 数据类型(5种常用)
-
string String
-
hash HashMap
-
list LinkedList
-
set HashSet
-
sorted_set TreeSet
3.1 String
-
存储的数据:单个数据,最简单的数据存储类型,也是最常用的数据存储类型
-
存储数据的格式:一个存储空间保存一个数据
-
存储内容:通常使用字符串,如果字符串以整数的形式展示,可以作为数字操作使用
==========================字符串类型 string==========================
添加/修改数据
set key value
获取数据
get key
删除数据
del key
添加/修改多个数据
mset key1 value1 key2 value2 …(m代表Multiple)
获取多个数据
mget key1 key2 …
获取数据字符个数(字符串长度)
strlen key
追加信息到原始信息后部(如果原始信息存在就追加,否则新建)
append key value
3.2 hash
hash哈希特点
-
新的存储需求:对一系列存储的数据进行编组,方便管理,典型应用存储对象信息
-
需要的存储结构:一个存储空间保存多个键值对数据
-
hash类型:底层使用哈希表结构实现数据存储
hash存储结构优化
-
如果field数量较少,存储结构优化为类数组结构
-
如果field数量较多,存储结构使用HashMap结构
==========================hash哈希类型==========================
添加/修改数据
hset key field value
获取数据
hget key field
hgetall key
删除数据
hdel key field1 [field2]
获取哈希表中字段的数量
hlen key
获取哈希表中所有的字段名或字段值
hkeys key
hvals key
3.3 List
-
数据存储需求:存储多个数据,并对数据进入存储空间的顺序进行区分
-
需要的存储结构:一个存储空间保存多个数据,且通过数据可以体现进入顺序
-
list类型:保存多个数据,底层使用双向链表存储结构实现
==========================list==========================
添加/修改数据
lpush key value1 [value2] ……
rpush key value1 [value2] ……
获取数据
lrange key start stop
lindex key index
llen key
获取并移除数据
lpop key
rpop key
3.4 Set
-
新的存储需求:存储大量的数据,在查询方面提供更高的效率
-
需要的存储结构:能够保存大量的数据,高效的内部存储机制,便于查询
-
set类型:与hash存储结构完全相同,仅存储键,不存储值(nil),并且值是不允许重复的
==========================Set==========================
添加数据
sadd key member1 [member2]
获取全部数据
smembers key
删除数据
srem key member1 [member2]
获取集合数据总量
scard key
判断集合中是否包含指定数据
sismember key member
3.5 sorted_set
-
新的存储需求:数据排序有利于数据的有效展示,需要提供一种可以根据自身特征进行排序的方式
-
需要的存储结构:新的存储模型,可以保存可排序的数据
-
sorted_set类型:在set的存储结构基础上添加可排序字段
==========================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
四.Jedis
我们要使用 Java 来操作 Redis,什么是Jedis 是 Redis 官方推荐的 java连接开发工具! 使用Java 操作 Redis 中间件!
1.导入对应的依赖
<!--导入jedis的包-->
<dependencies>
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.2.0</version>
</dependency>
</dependencies>
2、编码测试:
import redis.clients.jedis.Jedis;
public class TestPing {
public static void main(String[] args) {
// 1、 new Jedis 对象即可
Jedis jedis = new Jedis("127.0.0.1",6379);
// jedis 所有的命令就是我们之前学习的所有指令!所以之前的指令学习很重要!
System.out.println(jedis.ping());
}
}