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的浅入门的更多相关文章

  1. Redis详解入门篇

    Redis详解入门篇 [本教程目录] 1.redis是什么2.redis的作者3.谁在使用redis4.学会安装redis5.学会启动redis6.使用redis客户端7.redis数据结构 – 简介 ...

  2. Redis详解入门篇(转载)

    Redis详解入门篇(转载) [本教程目录] 1.redis是什么2.redis的作者3.谁在使用redis4.学会安装redis5.学会启动redis6.使用redis客户端7.redis数据结构 ...

  3. Redis介绍及入门安装及使用

    Redis介绍及入门安装及使用 什么是Redis Redis is an open source (BSD licensed), in-memory data structure store, use ...

  4. Redis 慢速入门(一)

    网上关于redis的入门文章其实已经很多了,这里仅仅以作者特独的视角来学习下redis相关的基础概念. 一切的基础 需要分清楚3个重要的概念,key,type,value. 这里的key为hello, ...

  5. Lua: 给 Redis 用户的入门指导

    转自:http://www.oschina.net/translate/intro-to-lua-for-redis-programmers 可能你已经听说过Redis 中嵌入了脚本语言,但是你还没有 ...

  6. .Net Core使用Redis的一个入门简单Demo

    本例子讲述一个在.Net core环境中对Redis数据库进行增删改查操作. 首先,要安装好Redis数据库,至于怎么安装,本文不再赘述,可以自行百度,有很详细的教程. 安装好之后,在CMD中输入 r ...

  7. linux系统下安装jdk,mysql,tomcat 和redis 和jedis入门案例

    Day47笔记Linux+redis入门 Day47   知识讲解:Jedis 1.Linux上jdk,mysql,tomcat安装(看着文档安装) 准备工作: 因为JDK,TOMCAT,MYSQL的 ...

  8. Lua: 给 Redis 用户的入门指导(转)

    add by zhj : Lua与Multi/EXEC的功能比较像,在执行过程中,redis不会执行其它命令,这就不会有并发访问的问题, 这是非常好的.但Multi/EXEC要求所有命令都是独立的,后 ...

  9. (转) Lua: 给 Redis 用户的入门指导

    可能你已经听说过Redis 中嵌入了脚本语言,但是你还没有亲自去尝试吧?  这个入门教程会让你学会在你的Redis 服务器上使用强大的lua语言. Hello, Lua! 我们的第一个Redis Lu ...

随机推荐

  1. input 只可以输入时分秒

    在html5的time中,只有时.分,没有秒. 例如<input type="time" name="user_date" /> 属性加上 step ...

  2. 【Python机器学习实战】决策树与集成学习(七)——集成学习(5)XGBoost实例及调参

    上一节对XGBoost算法的原理和过程进行了描述,XGBoost在算法优化方面主要在原损失函数中加入了正则项,同时将损失函数的二阶泰勒展开近似展开代替残差(事实上在GBDT中叶子结点的最优值求解也是使 ...

  3. DEDE整合套件实现本地多个网站随意切换的开发环境

    一.修改WEB全局配置: 在Listen 80 后面添加自己的端口号. 例如,2020是我的端口 Listen 2020 二.修改WEB站点配置: a---在NameVirtualHost *:80后 ...

  4. Java基础系列(32)- 递归讲解

    递归 A方法调用B方法,我们很容易理解 递归就是:A方法调用A方法!就是自己调用自己 利用递归可以用简单的程序来解决一些复杂的问题.它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题 ...

  5. 华为云计算IE面试笔记-桌面云中的用户组、虚拟机模板、模板虚拟机、虚拟机组和桌面组的关系及区别。发放完整复制和链接克隆虚拟机时,步骤有什么区别,要怎么选择桌面组?

    概念解释: 模板虚拟机:FC上创建的裸虚拟机,用于制作不同类型的虚拟机模板. 虚拟机模板:用于创建虚拟机的模板,对裸虚拟机(模板虚拟机)进行配置或自定义安装软件后,转为模板.虚拟机模板类型有完整复制, ...

  6. YOLO v3 & Pascal VOC数据集

    代码地址:https://github.com/YunYang1994/tensorflow-yolov3 https://hackernoon.com/understanding-yolo-f5a7 ...

  7. django 自定义auth中user登陆认证以及自写认证

    第一种: 重写自定义auth中user登陆认证模块, 引入MobelBackend from django.contrib.auth.backends import ModelBackend 重写验证 ...

  8. P6880-[JOI 2020 Final]オリンピックバス【最短路】

    正题 题目链接:https://www.luogu.com.cn/problem/P6880 题目大意 给出\(n\)个点\(m\)条边的有向图,边有边权和一个翻转权值. 翻转至多一条边使得\(1-& ...

  9. 轻量级 Java 基础开发框架,Solon & Solon Cloud 1.5.40 发布

    Solon 已有120个生态扩展插件,此次版本以细节打磨为主: 增加 mybatisplus-solon-plugin 插件 //至此,Solon 已完成国内外主流的5个ORM框架插件适配 插件 so ...

  10. 常见的==和equals比较

    在笔试上碰到很多这样类似的题,全部整理到这里 String a = "Hello"; String b = "Hello"; String c = new St ...