Redis详细教学

1. Redis概述

1.1. 什么是NoSql

NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,它泛指非关系型的数据库。随着互联 2003年之后web2.0 站的兴起,传统的关系数据库在应付web2.0 站,特别是超大规模和高并发的交友类型的web2.0纯动态 站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。

关系型数据库:就是以关系模型来建模的数据库管理系统。关系模型就是以行和列组成二维表。
Web1.0:只提供数据的读的能力
Web2.0:更强调写的能力。论坛,购物,贴吧…
Web3.0: 移动化,物联化供数据的读能力,虚拟化,智能化、云计算。
Web4.0 直播(并发技术)、AI(学习能力)、大数据(IT-DT)

1.1.2. 分类

http://www.nosql-database.org/

Memcached和Redis都是key-value类型的Nosql,主要区别在于redis支持的Value类型更多,redis不仅支持内存存储,还支持持久化到磁盘。

1.5. 使用场景

1.5.1. 缓存

经常查询数据,放到读速度很快的空间(内存),以便下次访问减少时间。减轻数据库压力,减少访问时间.而redis就是存放在内存中的。
Hibernte二级缓存(ehcache)

1.5.2. 计数器应用

站通常需要统计注册用户数, 站总浏览次数等等
新浪微博转发数、点赞数

1.5.4. 排行榜

总积分榜,今日积分榜,周积分,月积分,季度积分
方案:从数据库中查出来计算.

3.启动redis服务(带配置文件启动,和不带配置文件启动)

2.2. Linux下的安装和使用(了解)

1下载redis源码
wget http://download.redis.io/releases/redis-3.0.6.tar.gz
或者使用sftp上传redis-3.0.6.tar.gz
2安装redis
tar xf redis-3.0.6.tar.gz //解压
cd redis-3.0.6
//不需要配置参数 不需要执行./configure
make && make install//编译&&安装
3将redis设置为系统服务
cp (redis源码目录)utils/redis_init_script /etc/init.d/redis
vim /etc/init.d/redis //修改红框处的代码

4修改redis.conf配置文件
mkdir /etc/redis //创建/etc/redis目录
cp redis.conf /etc/redis/redis.conf
vim /etc/redis.conf
//将redis配置文件复制到redis
//设置为守护进程,以后台方式运行
使用service redis start命令启动redis服务.

5 将redis服务设置为开机启动
chkconfig –-add redis
chkconfig –level 35 redis on

3. Redis操作

3.1. 使用redis-cli 客户端操作redis

redis是key-value类型的Nosql,命令能操作key和Value,而对于key就是String,而Value就有很多类型(String,list,set,hash…).

3.1.2. 对key的常用操作

keys * //获取所有key列表
del key //删除key
expire key xx //设置key的过期时间(xx秒后过期)
ttl key //查看key的过期时间

flushall //清空整个redis服务器数据,所有的数据库全部清空
flushdb //清除当前库,redis中默认有16个数据库,名称分别为0,1,2.。。15(可以用select index 命令来切换数据库)

3.1.5. 对SortedSet(有序集合)的操作

3.1.7. 事务(重要)弱事务) (TCC、消息一致性)

multi //标记一个事务块的开始。
exec //执行所有事务块内的命令。

3.1.9. 设置密码(了解)

    4.2. Jedis数据结构操作

    使用jedis来操作redis的key和value,而value有很多种类型,和命令操作一样。

    4.2.1. Key操作

    4.2.3. List操作

    4.2.5. Hash操作

    Redis 提供了两种不同级别的持久化方式:RDB和AOF,可以通过修改redis.conf来进行配置.

    6.2. Redis Spring集成

    一般项目总都是有Spring,我们使用jedis访问reids时,所有要jedis被Spring管理。集群原理就是把核心对象交给Spring管理。
    Jedis核心对象:配置文件,连接池配置对象,连接池。
    集成方式有两种:
    Spring data-redis
    自己封装(自己封装)

    导入jar包
    准备配置文件,配置核心对象
    加载配置文件
    连接池配置对象
    连接池对象
    管理连接对象
    操作crud模板
    把配置文件集成Spring–以外部文件的方式进行导入
    测试
    通过crud模板操作redis

    6.3. Redis经典实用场景-缓存

    6.3.1. 为什么要使用缓存

    把经常查询的数据,很少修改的数据存放到缓存中,减少访问数据库,降低数据库压力并且缓存一般都是内存,访问速度比较快。

    6.3.2. 哪些数据适合放到缓存中

    经常查询:缓存就是提供数据查询高效访问。
    很少修改:修改时要同步修改缓存和数据库
    例如:地区数据、商品分类、数据字典 菜单(不考虑权限)

    6.3.3. 选择合适的缓存

    Hibernate二级缓存,mybatis二级缓存,redis中央缓存
    Hibernate二级缓存,mybatis二级缓存默认不支持集群缓存,要使用redis

    6.3.4. 怎么存储数据

    1) json:把要存放的数据转换为json类型的字符串
    保存缓存时:
    Java Object———–>json字符串
    获取缓存:
    json字符串——–>Java Object-
    Json框架:jdk-json-lib jackson gson fastjson

    6.4. 淘汰策略

    6.4.1. 为什么要淘汰数据

    淘汰一些数据,达到redis数据量都是有效的。选择合适的淘汰策略进行淘汰.怎么淘汰
    volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰
    volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰
    volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意(随机)选择数据淘汰
    allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰
    allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰
    no-enviction(驱逐):禁止驱逐数据(不删除任意数据.默认策略,但redis还会根据引用计数器进行释放),这时如果内存不够时,会直接返回错误)

    redis 确定驱逐某个键值对后,会删除这个数据并,并将这个数据变更消息发布到本地(AOF 持久化)和从机(主从连接)。

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年11月4日
下一篇 2018年11月4日

相关推荐