黑马程序员技术交流社区
标题:
【石家庄校区】Redis--非关系型数据库
[打印本页]
作者:
heifachangcun
时间:
2019-1-11 14:41
标题:
【石家庄校区】Redis--非关系型数据库
本帖最后由 小石姐姐 于 2019-1-17 09:57 编辑
redis
关闭
Ctrl+c
默认端口:
6379
//查看redis服务器进程列表
tasklist /svc | findStr "redis"
//查看端口为6379的链接
netstat -ano | findStr "6379"
数据不经常发生改变的情况下可以使用缓存
概念
非关系型数据库
一款高性能的NOSQL系列的非关系型数据库
功能:用于数据缓存
特点:
1.数据之间没有关联关系
2.数据存储在内存中
3.查询速度快(缓存)
4.成本低
5.存储格式固定,key value
6.独立性高
缺点:
1.没有统一标准,学习成本高
2.一般非关系型数据库不支持事务处理(redis支持)
3.只能存一些不经常发生改变的数据(作为关系型数据库的补充)
tip:一般会将数据存储在关系型数据库中,在非关系型数据库中备份存储关系型数据库
下载安装
直接解压安装包即可使用
.conf :配置文件
cli.exe:客户端
server.exe:服务器
注:客户端和服务器端都需要开启,先开服务器
命令操作
数据结构
1.redis存储的是:key,value格式的数据,其中key都是字符串,value有5种不同的数据结构
value的数据结构
1.字符串 String
2.哈希类型 hash:map格式
3.列表类型(数据存储可重复有序) list:linkedlist格式
4.集合类型(数据存储不可重复,无序) set
5.有序集合(数据存储不可重复,有序) sortedset
命令:
1.字符串
存储:
set key value
获取
get key
删除
del key
2.哈希类型
存储
hset map名称 field(map集合内的key的名) value
获取
hget map名称 field 获取指定键对应的field对应的值
hgetall map名称 获取所有键和值
删除
hdel map名称 field
3.列表类型:可以添加一个元素到列表的头部或者尾部
存储
从列表左边添加元素:
lpush list名称 value
从列表右边添加元素:
rpush list名称 value
获取
lrange list名称 start end 范围获取
删除
lpop list名称 : 删除列表最左边的元素,并将被删除的元素返回
rpop list名称 : 删除列表最右边的元素,并将被删除的元素返回
4.集合类型
存储
sadd set名称 value
获取
smembers set名称 --> 获取set集合中所有元素
删除
srem set名称 value 删除set集合中的某个元素
5.有序集合(用于排行榜)
存储
zadd sortedset名称 score(权重) value
score用于排序,影响存储先后顺序
获取
zrange sortedset名称 start end
在语法后加上withscores可查看分数
删除
zrem sortedset名称 value
6.通用命令
1.keys * :查询所有的键名
2.type key :获取键对应的value对应的类型
3.del key(集合或列表的名字) :删除指定的key value
持久化操作
概念:
当redis服务器重启,数据会丢失,我们可以将redis内存中的数据持久化保存到硬盘的文件中
持久化机制
RDB:默认的
不需要进行配置,默认就使用这种机制
在一定的间隔时间中,检测key的变化情况,然后持久化数据
使用:
1.编辑redis.windows.conf文件
save 900 1 在900秒后至少有1个key发生改变,就会持久化一次
save 300 10 在300秒后至少有10个key发生改变,就会持久化 一次
save 60 10000 在60秒后至少有10000个key发生改变,就会持久化一次
2.重新启动服务器,并指定配置文件名称
点击文件地址栏cmd --> redis-server.exe --> 配置文件名
AOF:日志记录方式
可以记录每一条命令的操作,可以每一次命令操作后,持久化数据
使用Java客户端jedis操作redis
概念:
一款Java操作redis数据库的工具
使用步骤
1.下载jedis的jar包
2.使用
获取连接(地址,端口号)
Jedis jedis = new Jedis(地址,端口号);
如果不输入参数,默认是本机的地址和端口号,建议输入
操作
jedis.命令/方法
关闭连接
jedis.close
jedis操作各种redis的数据结构
jedis.setex(key,时间,value);在设置的时间到了后会把指定的键自动删除
设置有效期,redis自动删除
连接池工具类: JedisPool
连接池
使用:
1.创建JedisPool连接池对象
JedisPool pool = new JedisPool();
2.调用方法getResource()方法获取Jedis连接
Jedis jedis = jedisPool.getResource();
3.使用
jedis.命令
4.关闭连接
jedis.close();
工具类
加载配置文件
案例:
缓存优化redis
数据库的数据一旦发生变化,则需要更新缓存
数据库的表执行了增删改的操作,需要将redis缓存数据情况,再次存入
在service中的增删改中将redis删除,从新创建缓存
缓存思路
先去缓存中查询数据
如果有数据
--> 不是第一次查询,直接把缓存查到的结果返回
如果没有数据
--> 是第一次查询,去dao层执行查询操作接收结果,接收到结果后需要把结果'存到缓存'中(对数据格式进行调整)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2