Redis的认识和基本操作

 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

1public enum RedisUtil { 2 REDIS_POOL; 3 private static JedisPool pool; 4 5 static { 6 JedisPoolConfig config = new JedisPoolConfig(); 7 config.setMaxTotal(10);//最大连接数 8 config.setMaxIdle(4);//最小连接数 9 pool = new JedisPool(config, "127.0.0.1"); 10 11 } 12 13 public Jedis getjedis(){ 14 return pool.getResource(); 15 } 16 17}

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

普通存值的操作

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

 string操作

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

List操作

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

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存放的数据到达配置的最大内容后,会按照配置淘汰策略进行淘汰.

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java如何操作非关系型数据库redis(

redis简单介绍:是一种Nosql数据库,Nosql全称是NotOnlySQL,是一种不同于关系型数据库的数据库管理系统设计方式。对NoSQL最普遍的解释是“非关系型的”,强调KeyValueStores和文档数据库的优点,而不是单纯的反对RDBMSSowhatcanIdowithJedis?All

Redis5版本集群搭建

一、简介1.1Redis是什么Redis是一个开源的,使用ANSIC编写,高性能的KeyValue的NoSQL数据库。1.2Redis特点(1)基于内存(2)可持久化数据(3)具有丰富的数据结构类型,适应非关系型数据的存储需求(4)支持绝大多数主流开发语言,如C

Redis01——Redis介绍

1、NoSQL数据库概述  NoSQL(NoSQLNotOnlySQL),意即“不仅仅是SQL”,泛指非关系型的数据库。  NoSQL不依赖业务逻辑方式存储,而以简单的keyvalue模式存储。因此大大的增加了  数据库的扩展能力  特点:不遵循SQL标准,不支持ACID,远超于SQL的性能  适