什么是Redis
Redis简介:
是以key-value形式存储,和传统的关系型数据库不一样.不一定遵循传统数据库的一些基本要求.(非关系型的,分布式的,开源的,水平可拓展的)
优点:
对数据高并发读写(直接是内存中进行读写的)
对海量数据的高效率存储和访问
对数据的可拓展性和高可用性.
单线程操作,每个操作都是原子操作,没有并发相关问题(redis 6)
缺点:
redis(ACID处理非常简单)
无法做太复杂的关系数据库模型
Redis是以key-value store存储.
键可以包含:(string)字符串,哈希,(list)链表,(set)集合,(zset)有序集合.这些数据集合都指出push/pop,add/remove及取交集和并集以及更丰富的操作.redis支持各种不同方式排序,为了保证效率,数据都是缓存在内存中.它可以从周期性的把更新的数据写入到磁盘或者把修改操作写入追加的文件中.
redis定位是缓存, 提高数据读写速度, 减轻对数据库存储与访问压力
一个字,快
优势
性能极高 – Redis能支持超过 10W次每秒的读写频率。 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。 原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作合并后的原子性执行。 丰富的特性 – Redis还支持 publish/subscribe(发布/订阅), 通知, key 过期等等特性。
下面是官方的bench-mark数据: 测试完成了50个并发执行100000个请求。 设置和获取的值是一个256字节字符串。 Linuxbox是运行Linux2.6,这是X3320Xeon2.5ghz。 文本执行使用loopback接口(127.0.0.1)。
结果:读的速度是110000次/s,写的速度是81000次/s。
还是——快
怎么学Redis
redis在线入门 : Try Redis
redis 中文资料站: CRUG网站
怎么安装Redis
链接:https://pan.baidu.com/s/1AO7yCjTILNJzUoj5uh5Tpw
提取码:r0dt
傻瓜式安装,下一步,下一步就可以了
Redis默认端口是: 6379
安装好后会自动启动服务器,并且没有密码
进入到安装目录下,使用cmd命令行运行redis-cli.exe程序,出现下面界面表示安装成功
数据类型
String 类型
String类型包含多种类型的特殊类型,并且是二进制安全的.比如序列化的对象进行存储,比如一张图片进行二进制存储.,比如一个简单的
Map<String, String> map
map.put("name", Json.toJsonString(user));
在redis-cl中使用指令操作(常用)
set key value -> 存入键值对
get key -> 根据键取出值
incr key -> 把值递增1
decr key -> 把值递减1
del key -> 根据键删除键值对
setex key timeout value -> 存入键值对,timeout表示失效时间,单位s
ttl key->可以查询出当前的key还剩余多长时间过期
setnx key value -> 如果key已经存在,不做操作, 如果key不存在,直接添加
incrby key num -> 偏移值 mset k1 v1 k2 v2 ... -> 批量存入键值对 mget k1 k2 ... -> 批量取出键值 append key 'value' -> 原值后拼接新内容 setnx key value -> 存入键值对,键存在时不存入 setex key timeout value -> 存入键值对,timeout表示失效时间,单位s ttl ->可以查询出当前的key还剩余多长时间过期 setrange key index value -> 修改键对应的值,index表示开始的索引位置
在jedis中使用
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.4.3</version>
</dependency>
// 1:创建Jedis连接池
JedisPool pool = new JedisPool("localhost", 6379);
// 2:从连接池中获取Jedis对象
Jedis jedis = pool.getResource();
// 设置密码
//jedis.auth(密码);
// 3:TODO
System.out.println(jedis);
// 4:关闭资源
jedis.set("name","ylf"); //存入
System.out.println(jedis.get("name")); // 取出
jedis.expire("name",50); // 设置有效期时间
System.out.println(jedis.ttl("name")); // 查看剩余