1、Redis简介:完全开源免费的高性能的 key - value数据库
- 支持数据持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
- 不仅仅支持单一的 key-value类型数据,同时还提供list、set、zset、hash等数据结构的存储
- 支持数据备份,即master-slave模式的数据备份
- 性能极高,Redis能读的速度是110000次/s,写的速度是81000次/s
- Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXCEL指令包起来
- 支持publish/sebscribe,通知,key过期等等特性
2、下载
3、安装:
- 解压即可
4、运行:服务端
若有报错,解决方案如下:
- win+R然后输入services.msc,调出Windows服务,然后找到Redis,右键手动停止就好
5、基本数据结构
- String:是二进制安全的,意思是redis的string可以包含任何数据。比如jpg图片或者序列化对象:最大能存储512MB
- Hash:一个string类型的key-value的映射表,hash特别适合用于存储对象:存储232 -1 键值对 (40多亿)
- List:按照插入顺序,可以添加一个元素到列表的头部(左边)或尾部(右边)。可存储232 -1元素(每个列表可存储40多亿)
- set:无顺序集合,不允许重复,通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)
- Sorted Set:有序集合zset,每个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行从小到大的排序;zset的成员是唯一的,但分数(score)却可以重复
6、各个数据类型应用场景
类型 | 简介 | 特性 | 场景 |
string(字符串) | 二进制安全 | 可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512M | - |
hash(字典) | 键值对集合,即编程语言中的Map类型 | 适合存储对象,并且可以像数据库中update一个属性一样只修改某一项属性值(Memcached中需要取出整个字符串反序列化对象修改再序列化回去) | 存储、读取、修改用户属性 |
List(列表) | 链表(双向链表) | 增删快,提供了操作某一段元素的API | 1、最新消息排行等功能(比如朋友圈的时间线)2、消息队列 |
Set(集合) | 哈希表实现,元素不可重复 | 1、添加、删除、查找的复杂度都是O(1) 2、为集合提供了求交集、并集、差集等操作 | 1、共同好友 2、利用唯一性,统计访问网站的所有独立ip 3、好友推荐时,根据 tag求交集,大于某个阈值就可以推荐 |
Sorted Set(/有序集合) | 将Set中的元素增加一个权重参数score,元素按score有序排列 | 数据插入集合时,已经进行天然排序 | 1、排行榜 2、有权重的消息队列 |
7、之前的运行的服务端不要关闭,切换到redis目录下运行:
redis-cli.exe -h 127.0.0.1 -p 6379 // 打开客户端连接
-h 表示连接的主机,-p表示连接的端口
8、基本使用
• String:set key value / get key
• Hash:HMSET key field1 “hello” field2 “world” /HGET/HGETALL key field1
• List:lpush key member / lrange key 0 10
• Set:sadd key member / smembers key
• Sorted Set:zadd key score member / ZRANGEBYSCORE key 0 1000
9、Java使用Redis-引入依赖
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.1.0</version>
</dependency>
关于连接的密码
# 创建Jedis实例
// 连接本地的Redis服务
Jedis jedis = new Jedis("localhost");
jedis.auth("123456"); // 此处为你设置的密码
System.out.println("连接成功");
// 查看服务是否运行
System.out.println("服务正在运行: " + jedis.ping());
10、python使用Redis