Redis的浅入门
Redis的浅入门
# 缓存的思想
问题提出:我们的用户数量上亿,如果登录,访问数据库user特别耗时,该怎么办?——提出缓存
方法:怎样从缓存在获取数据?
*有数据:
直接返回
*无数据:
(1)从数据库查询
(2)将数据放入缓存
(3)返回数据
认识redis
特点:-属于NOSQL,数据之间没有关联关系,数据存储在内存。
对比一下关系型数据库(MYSQL..)数据之间有关联,数据存储在硬盘的文件上。
数据结构-[key,value]
- key - 字符串
- value - 5种不同
value数据结构:
- 字符串类型 String
- 哈希类型 hash
- 列表类型 list
- 集合类型 set
- 有序集合类型 sortedset
五种数据结构命令
https://www.redis.net.cn/ 可以看一个学习redis的中文网
1. 字符串类型 string
1. 存储: set key value
2. 获取: get key
3. 删除: del key
2. 哈希类型 hash
1. 存储: hset key field value
2. 获取:
* hget key field: 获取指定的field对应的值
* hgetall key:获取所有的field和value
3. 删除: hdel key field
3. 列表类型 list:可以添加一个元素到列表的头部(左边)或者尾部(右边)
1. 添加:
1. lpush key value: 将元素加入列表左表
2. rpush key value:将元素加入列表右边
2. 获取:
* lrange key start end :范围获取
3. 删除:
* lpop key: 删除列表最左边的元素,并将元素返回
* rpop key: 删除列表最右边的元素,并将元素返回
4. 集合类型 set : 不允许重复元素
1. 存储:sadd key value
2. 获取:smembers key:获取set集合中所有元素
3. 删除:srem key value:删除set集合中的某个元素
5. 有序集合类型 sortedset:不允许重复元素,且元素有顺序.每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
1. 存储:zadd key score value
2. 获取:zrange key start end [withscores] (start:0,end:-1)
3. 删除:zrem key value
6. 通用命令
1. keys * : 查询所有的键
2. type key : 获取键对应的value的类型
3. del key:删除指定的key value
持久化
问题提出:redis服务器重启后,或电脑重启,我们的数据会丢失,怎么办?
持久化出现:将redis内存中的数据持久化保存到硬盘的文件中。
机制:
- RDB:默认情况,检测key的变化情况来持久化数据
这里我们通过修改redis.windows.conf文件
# after 900 sec (15 min) if at least 1 key changed
save 900 1
# after 300 sec (5 min) if at least 10 keys changed
save 300 10
# after 60 sec if at least 10000 keys changed
save 60 10000
修改完成后重启redis服务器,并制定配置文件名称
到目录,通过命令行方式运行-redis-server.exe redis-windows.conf
- AOF:日志记录的方式,可以记录每一条命令的操作。可以每一次命令操作后,持久化数据
还是修改redis.windows.conf文件
appendonly no(关闭AOF) ---> yes(开启AOF)
# appendfsync always :每一次操作都进行持久化
appendfsync everysec :每隔一秒就行一次持久化
# appendfsync no : 不进行持久化
Jedis
简要说就是一款java操作redis数据库的工具。
在操作前要打开redis服务器端,今天打开的时候遇到了一些问题:
QForkMasterInit: system error caught. error code=0x000005af, message=VirtualAllocEx failed.: unknow
翻译过来就是:没有设置redis的最大内存
解决办法:
在redis的配置文件即redis.wiondows.conf(我的是windows64版本)中加入maxmemory和maxheap配置(加在最最后即可)
maxmemory 268435456
maxheap 314572800
用cmd启动,成功!记得一定要加上配置文件
redis-server.exe redis.windows.conf
Jedis使用方法和redis几乎一样,这里只是一次浅入的认识,后期有更深入再介绍。
最后强调一句:
使用redis缓存一些不经常发生变化的数据。数据库的数据一旦发生改变,则需要更新缓存。
Redis的浅入门的更多相关文章
- Redis详解入门篇
Redis详解入门篇 [本教程目录] 1.redis是什么2.redis的作者3.谁在使用redis4.学会安装redis5.学会启动redis6.使用redis客户端7.redis数据结构 – 简介 ...
- Redis详解入门篇(转载)
Redis详解入门篇(转载) [本教程目录] 1.redis是什么2.redis的作者3.谁在使用redis4.学会安装redis5.学会启动redis6.使用redis客户端7.redis数据结构 ...
- Redis介绍及入门安装及使用
Redis介绍及入门安装及使用 什么是Redis Redis is an open source (BSD licensed), in-memory data structure store, use ...
- Redis 慢速入门(一)
网上关于redis的入门文章其实已经很多了,这里仅仅以作者特独的视角来学习下redis相关的基础概念. 一切的基础 需要分清楚3个重要的概念,key,type,value. 这里的key为hello, ...
- Lua: 给 Redis 用户的入门指导
转自:http://www.oschina.net/translate/intro-to-lua-for-redis-programmers 可能你已经听说过Redis 中嵌入了脚本语言,但是你还没有 ...
- .Net Core使用Redis的一个入门简单Demo
本例子讲述一个在.Net core环境中对Redis数据库进行增删改查操作. 首先,要安装好Redis数据库,至于怎么安装,本文不再赘述,可以自行百度,有很详细的教程. 安装好之后,在CMD中输入 r ...
- linux系统下安装jdk,mysql,tomcat 和redis 和jedis入门案例
Day47笔记Linux+redis入门 Day47 知识讲解:Jedis 1.Linux上jdk,mysql,tomcat安装(看着文档安装) 准备工作: 因为JDK,TOMCAT,MYSQL的 ...
- Lua: 给 Redis 用户的入门指导(转)
add by zhj : Lua与Multi/EXEC的功能比较像,在执行过程中,redis不会执行其它命令,这就不会有并发访问的问题, 这是非常好的.但Multi/EXEC要求所有命令都是独立的,后 ...
- (转) Lua: 给 Redis 用户的入门指导
可能你已经听说过Redis 中嵌入了脚本语言,但是你还没有亲自去尝试吧? 这个入门教程会让你学会在你的Redis 服务器上使用强大的lua语言. Hello, Lua! 我们的第一个Redis Lu ...
随机推荐
- 缩减Centos7xfs磁盘空间
问题描述:df -h查看 root目录仅有20G空间,其余300G空间全在home目录下.xfs不可以直接缩减,所以只能删除xfs盘然后重新添加. 解决办法: 1. 注释想要删除的磁盘,此处以cent ...
- ansible 批量安装yum包
1.首先安装一下ansible yum install ansible 2.修改一下ansible的参数以防ssh过去的时候需要首次判断yes 或者no sed -i 's/#host_key_ch ...
- PTA 面向对象程序设计6-2 统计数字
对于给定的一个字符串,统计其中数字字符出现的次数. 类和函数接口定义: 设计一个类Solution,其中包含一个成员函数count_digits,其功能是统计传入的string类型参数中数字字符的个数 ...
- Mysql将其他表中的数据更新到指定表中
update tb set tb.字段= (select 字段 from tb1 where tb.字段1 = tb1.字段1); update role set uid = (select ID ...
- js中date类型的格式转化为yyyy-MM-dd HH:mm:ss的String类型
在vue中或其他框架中可以在Date的原型链中添加Format的方法,如ruoyi可以写在main.js中更好,如果写在utils还需要去导入包. 正常的js直接放到utils.js就好 Date.p ...
- 版本管理 - Git 使用入门
Git 是一个分布式的版本管理系统,而 SVN 是一个集中式管理系统. 版本控制 Git与SVN的对比 对比 SVN Git 工作方式 集中式 分布式 文件管理 增量式 系统快照 权限控制 对团队中参 ...
- 制作python程序windows安装包(飞机大战源码)
本文以飞机大战源码为例: 1.首先使用pyinstaller -w xxx.py打包 -w的意思是不显示命令行:飞机大战源码由多个.py文件以及一些图片,音乐文件组成,我们将main.py打包, ...
- linux 客户机挂载vitualbox共享文件夹
1. 安装增强功能包(Guest Additions) 安装好Ubuntu 9.10后,运行Ubuntu并登录.然后在VirtualBox的菜单里选择"设备(Devices)" - ...
- P4716-[模板]最小树形图
正题 题目链接:https://www.luogu.com.cn/problem/P4716 题目大意 给出\(n\)个点\(m\)条边的一张有向图,求以\(r\)为根的最小外向树. \(1\leq ...
- Java-爬虫-小项目
爬取数据:(获取请求返回的页面信息,筛选出我们想要的数据就可以了!) 项目地址:https://gitee.com/zwtgit/java-reptile 导入依赖,写一个工具类 <depend ...