Redis是什么

Redis 是一个高性能的开源的、C语言写的Nosql(非关系型数据库),数据保存在内存中。

Redis 是以key-value形式存储的Nosql,和传统的关系型数据库不一样。不一定遵循传统数据库的一些基本要求,比如说,不遵循sql标准,事务,表结构等等,非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合。

redis的优势

1.数据保存在内存,存取速度快,并发能力强

2.它支持存储的value类型相对memcached更多,包括string(字符串)、list(链表)、set(集合)、 zset(sorted set --有序集合)和hash(哈希类型)。

3.redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库(如MySQL)起到很好的补充作用。

4.它提供了Java,C/C++,C#,PHP,JavaScript等客户端,使用很方便。

5.Redis支持集群(主从同步)。数据可以主服务器向任意数量从的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。

6.支持持久化,可以将数据保存在硬盘的文件中

7.支持订阅/发布(subscribe/publish)功能 QQ群

数据存储:

存放到内存中,并且还能不定期持久化到硬盘.

Value类型:

相较于memcached支持Value更多

客户端支持:

支持多种客户端-跨语言

超大并发支持:

支持集群

Mysql、Memcached和Redis的比较

储过期:存储数据时设置一个有效期,时间到了就没了.

场景:订单,vip,短信验证码,游戏道具,优惠券,红包等等

Memcached和Redis的相同点和不同点? Memcached?

相同点:

都是key-value类型Nosql,都存放数据到内存中,读写效率高,而且都支持存储过期.

不同点:

redis相较于Memcached还支持持久化到磁盘,数据安全更高.

redis相较于Memcached支持value类型更多.

redis的使用场景

中央缓存  计数器应用  实时攻防系统  排行榜  设定有效日期  自动去重(set数据结构可自动去重)  队列  消息订阅

在java中使用Redis

首先我们需要导入redis的jar包,(commons-pool2-2.2.jar   ,jedis-2.5.2.jar)

然后我们可以准备一个枚举类 获取得到jedis

public enum  RedisUtil {
REDIS_POOL;
private static JedisPool pool; static {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(10);//最大连接数
config.setMaxIdle(4);//最小连接数
pool = new JedisPool(config, "127.0.0.1"); } public Jedis getjedis(){
return pool.getResource();
} }

然后我们就可以在测试类中对Redis进行操作了,

普通存值的操作

@Test
public void testJedisStringOper() throws Exception{
Jedis jedis = JeditUtil.INSTANCE.getJedis();
//清空当前数据库
jedis.flushDB();
System.out.println("name这个key是否存在:"+jedis.exists("name"));//false
jedis.set("name","songsong");
System.out.println("name的值:"+jedis.get("name"));//songsong
System.out.println("所有的Key:"+jedis.keys("*"));//[name]
jedis.del("name");
System.out.println("所有的Key:"+jedis.keys("*"));//[] JeditUtil.INSTANCE.closeJedis();
}

string操作

@Test
public void testJedisString() throws Exception{
Jedis jedis = JeditUtil.INSTANCE.getJedis();
//清空当前数据库
jedis.flushDB();
jedis.set("name","songsong");
System.out.println("name的值:"+jedis.get("name"));//songsong
jedis.append("name","123456");
System.out.println("追加之后的name的值:"+jedis.get("name"));//songsong123456 JeditUtil.INSTANCE.closeJedis();
}

List操作

    @Test
public void RedisList1() throws Exception{
//将值赋值进去
jedis.flushDB();//清除当前数据库中的数据
jedis.lpush("list","aa","bb","ss","xx","dd");//会给list集合赋值
SortingParams params = new SortingParams();//设置排序方式
params.alpha();//给字符串修改排序方式
System.out.println( jedis.lrange("list", 0, -1));//读取到具体的数据,o表示从0开始,-1结束 }
/**

set操作

hash的操作

Redis持久化配置

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

1.1.  RDB模式

RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照,默认开启该模式.

如何关闭 rdb 模式:

save ""

# save 900 1        //至少在900秒的时间段内至少有一次改变存储同步一次

# save xxx

# save 60 100008

1.2.  AOF追加模式

AOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集,默认关闭该模式。

如何开启aof模式:

appendonly yes         //yes 开启,no 关闭

# appendfsync always //每次有新命令时就执行一次fsync

#这里我们启用 everysec

appendfsync everysec //每秒 fsync 一次

# appendfsync no      //从不fsync(交给操作系统来处理,可能很久才执行一次fsync)

其它的参数请大家看redis.conf配置文件详解

淘汰策略

淘汰一些数据,达到redis数据都是有效的,确保内容优化。选择合适的淘汰策略进行淘汰。

1.1.  怎么淘汰

olatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰

volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰

allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰

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

当redis存放的数据到达配置的最大内容后,会按照配置淘汰策略进行淘汰.

Redis的认识和基本操作的更多相关文章

  1. Redis数据结构之sds基本操作函数

    本文及后续文章,Redis版本均是v3.2.8 本篇文章讲解sds基本操作函数,我们从源码角度来进一步理解. 一.sds创建函数和销毁 sds创建函数 /* Create a new sds stri ...

  2. Redis(1.2)Redis的数据结构与基本操作

    Redis的数据结构,其本身大方向是键值对 [0]大概特点 相关产品:Redis.Riak.SimpleDB.Chordless.Scalaris.Memcached 形式:Key 指向 Value ...

  3. node.js中对 redis 的安装和基本操作

    一.win下安装redis https://github.com/MicrosoftArchive/redis/releases 下载Redis-x64-3.2.100.zip,然后解压,放到自定义目 ...

  4. redis对key的基本操作

    不忘初心,励志前行 del key1 key2 ... Keyn作用: 删除1个或多个键返回值: 不存在的key忽略掉,返回真正删除的key的数量 rename key newkey作用: 给key赋 ...

  5. W3School Redis教程(安装/基本操作/高级操作/命令/官方文档/官方集群教程)

    说明:Redis有自身的客户端连接软件,也可以使用Telnet进行连接操作. 来自W3School的Redis教程,基本上涵盖了从安装到状态监控的教程. W3School:https://www.gi ...

  6. redis的数据类型和基本操作

    Redis 的Key Redis 的 key 是字符串类型,但是 key 中不能包括边界字符,由于 key 不是 binary safe的字符串,所以像"my key"和" ...

  7. redis(二)----基本操作

    1. redis介绍 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset( ...

  8. Redis数据库 常用的基本操作

    一.redis数据库操作 redis数据库默认有16个数据库[0-15],默认进入的是0库. select  数据库名 :切换数据库. keys  * :查看所有的键. expire 键 秒数:设置过 ...

  9. 对redis客户端jedis2.8.0的进一步封装

    jedis2.8.0的进一步封装: 1.序列化存储对象 2.结合spring,创建redis连接池 3.提供了基础的单个实体操作,有序list操作和一对多关系list的操作,对list提供了分页的封装 ...

随机推荐

  1. 【Spring】Spring boot多数据源历险记

    一.问题描述 笔者根据需求在开发过程中,需要在原项目的基础上(单数据源),新增一个数据源C,根据C数据源来实现业务.至于为什么不新建一个项目,大概是因为这只是个小功能,访问量不大,不需要单独申请个服务 ...

  2. node.js压缩版 Windows安装

    1.下载 下载地址:https://nodejs.org/zh-cn/download/ 选择相应的版本下载 2.解压缩 将文件解压到要安装的位置,并新建两个目录 node-global :npm全局 ...

  3. SSH框架整合jar包时的注意事项

    SSH框架整合jar包时的注意事项: 在将三个框架所需的jar整合到一起后,要看一下有没有相同类型但是版本不同的jar包,如果有的话,需要把低版本的jar包删除掉,否则会报错.我这里整合的时候java ...

  4. ServiceStack支持跨域提交

    //ServiceStack对浏览器有一定的限制 //修改AppHost.cs文件 using Funq;using ServiceStack;using ServiceStackTest.Servi ...

  5. qt基本类

    多firstpage secondpage thirdpage fouthpage  实现 多页面 xml解析 实现 按钮 和 slot实现 mysql数据库访问实现

  6. JDK 泛型之 Type

    JDK 泛型之 Type 一.Type 接口 JDK 1.5 引入 Type,主要是为了泛型,没有泛型的之前,只有所谓的原始类型.此时,所有的原始类型都通过字节码文件类 Class 类进行抽象.Cla ...

  7. java jvm入门 jvm什么意思 jvm调优

    接下来我会给大家讲解 国内最顶尖的jvm技术 不服来战

  8. schwarz( 施瓦兹)不等式证明

    证明 如果: 函数 y=ax^2+2bx+c 对任意x >=0 时 y>=0; 函数图象在全部x轴上方,故二次方程判别式 b^2-4ac<=0;(即方程无实数解) 即(2b)^2&l ...

  9. py-opp 类(class)

    类的创建 class 类名: pass class Bar: def foo(self,arg): # self ,是传的实例对象, print('self:',self,arg) #因为类属性和方法 ...

  10. 笔记本的Windows系统怎么设置有了外接鼠标后停用触摸板

    点击控制面板,切换小图标模式,找到鼠标,点击它,然后会弹出一个窗口,找到ELAN选项卡(一般有个红色图标,不过可能需要对应驱动才会有此选项卡),选中插入外置 USB 指向装置时禁用.点击确定保存配置即 ...