jredis和letucce_Redis与Jedis

本文介绍了Redis的基础概念,特点,配置文件以及可视化工具。详细讲解了Redis的数据类型如string、hash、list、set、zset的使用,并讨论了Redis的持久化方式。文章还涉及了Redis的安全设置,性能测试,以及Jedis作为Java客户端连接Redis的方法,包括单个Jedis实例和连接池的使用。最后,文章提到了Redis适用于网站访问数据的二八定律优化,以及其快速的原因。
摘要由CSDN通过智能技术生成

# redis

1. 概念:基于内存,缓存数据库,⾮关系型数据库。

2. 特点:

1. 内存作为数据存储介质。1.珍贵,2.读写效率极⾼,远超数据库。需要异步的同步到磁盘

上,所以,持久化⽅式有两种。

2. ⾮关系型数据库,所以KeyValue形式存储,数据类型value有多种,常⻅的有5种。

3. 与 memcache 不同的是,但有持久化操作,可以作为数据库使⽤。持久化⽅式两种:快照

模式,aof⽇志追加模式。

4. 主从模式,主服务器和备服务器,哨兵模式。

5. 缓存过程:第⼀次取,将数据从数据库读取,都放在内存中的redis中,缓存,第⼆次,直

接从内存的redis去取,节约了应⽤程序服务器和数据库通过io交互的次数。

3. 配置⽂件:redis.windows.conf

4. 可视化⼯具:redis desktop manager

5. test01,执⾏ redis 的⽅法

//1. 启动redis服务端

redis-server redis.windows.conf

//2. 启动redis客户端

//重启⼀个cmd,之前的不能关,是服务器

redis-cli.exe -p 6379

redis-cli.exe -h localhost -p 6379

//3. 服务器和客户端是否接上头

ping

//4. 设置密码

//服务器不重启⼀直这个密码

config set requirepass abc

6. test02,数据类型

//选择数据库,默认0-15有16个数据库

select 2

//1. 设置获取 string

set hello world

get hello

//2. 存储 hash 类型,适合存储对象。

hmset stu sid 02142010 score 99

hgetall stu

hget stu sid

//3. lists:(1)重复有序,返回下标索引。(2)redis的list基于链表,查询慢,插⼊删除快。

//左侧插⼊

lpush subject java

lpush subject html5

lpush subject python

lrange subject 1 100

//右侧插⼊

rpush bike hello

rpush bike ofo

rpush bike mobike

lrange bike 0 100

rpush bike hello

//4. set ⽆序集合,不重复,返回受影响⾏数。

sadd week monday

sadd week thuresday

sadd week Wednesday

sadd week thrusday

smembers week

//5. zset 有序集合,不重复。

zadd java 100 yiyi

zadd java 100 erer

zadd java 99 sansan

zrangebyscore java 0 99

zrangebyscore java 100 100

7. redis的持久化

8. 安全:

//设置密码,默认没有密码

set requirepass abc

auth abc

9. 性能测试

10. 客户端连接

redis通过监听⼀个tcp端⼝

1. ⾸先,客户端socket会被设置为⾮阻塞模式

2. 然后为socket设置tcp_nodelay属性

3. 设置⼀个⽂件来监听

11. 事务

//事务开始

mutil

//⼊队

set person yiyi

set person erer

//执⾏

exec

//回滚,取消

discard

//监听

watch

jedis

1. jedis是java来访问redis数据库的api。

2. 新建项⽬:

1. 添加依赖:junit,jedis2.8.0

2. 打开redis服务器

package com.qfedu.test;

import org.apache.commons.pool2.impl.GenericObjectPoolConfig;

import org.junit.After;

import org.junit.Before;

import org.junit.Test;

import redis.clients.jedis.Jedis;

import redis.clients.jedis.JedisShardInfo;

import redis.clients.jedis.ShardedJedis;

import redis.clients.jedis.ShardedJedisPool;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

public class TestJedis {

Jedis j=new Jedis();

@Before

public void setUp(){

j=new Jedis();

}

@After

public void tearDown(){

if (j!=null){

j.close();

j=null;

}

}

@Test

public void test(){

System.out.println(j.ping());

}

@Test

public void testString(){

System.out.println(j.set("aaa", "rr"));

System.out.println(j.get("aaa"));

}

@Test

public void testHash(){

Map actors=new HashMap<>();

actors.put("jack","jack");

actors.put("rose","rose");

System.out.println(j.hmset("actor", actors));

System.out.println(j.hgetAll("actor"));

}

@Test

public void testList(){

System.out.println(j.rpush("person", "xiaowang"));

System.out.println(j.rpush("person", "xiaoma", "xiaoliu", "xiaozhao"));

System.out.println(j.lrange("person", 0, 10));

}

//不重复

@Test

public void testSet(){

System.out.println(j.sadd("food", "zhaji","baozi","zhaji"));

System.out.println(j.smembers("food"));

}

@Test

public void testZset(){

System.out.println(j.zadd("fenshu", 200, "java"));

System.out.println(j.zadd("fenshu", 100, "html"));

System.out.println(j.zadd("fenshu", 90, "phyton"));

System.out.println(j.zrangeByScore("fenshu", 80, 150));

}

//连接池

@Test

public void testPool(){

GenericObjectPoolConfig config=new GenericObjectPoolConfig();

//设置最大的空闲数

config.setMaxIdle(20);

//设置最大连接总数

config.setMaxTotal(50);

//设置最大的等待时间

config.setMaxWaitMillis(5000);

List shard=new ArrayList<>();

//连接redis服务器 连接本机的6379

shard.add(new JedisShardInfo("localhost","6379"));

ShardedJedisPool pool=new ShardedJedisPool(config,shard);

ShardedJedis jedis = pool.getResource();

System.out.println(jedis.get("aaa"));

}

}

//Jredis是java连接redis 的一套api

补充

1. ⼆⼋定律:

1. 概念:⽹站访问数据的特点⼤多数呈现在"⼆⼋定律":80%的业务访问集中在20%的数据上。

这时为了减轻数据的压⼒和提⾼⽹站的数据访问速度,则可以使⽤缓存机制来优化⽹站。

2. 热数据

1. 访问频次:需要被频繁访问的数据

2. 数据库:计算

3. 冷数据:

1. 访问频次:对于离线类不经常访问的数据,⽐如,企业备份数据,⽇志数据。

2. 数据库:存储

4. redis为什么这么快?

1. 完全基于内存

2. 数据结构简单

3. 单线程单进程,避免上下⽂切换,不必考虑锁。

4. 单个线程⾼效的处理多个连接请求(尽量减少⽹络 IO 的时间消耗)

5. 为什么redis 单线程?

1. 因为单线程已经很快了,不再需要多线程

2. 但redis运⾏的时候不⽌⼀个线程的,⽐如持久化的时候会fork⼀个⼦进程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值