myNote-redis基础

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端⼝
. ⾸先,客户端socket会被设置为⾮阻塞模式
. 然后为socket设置tcp_nodelay属性
. 设置⼀个⽂件来监听

11. 事务

//事务开始
mutil
//⼊队
set person yiyi
set person erer
//执⾏
exec
//回滚,取消
discard
//监听
watch

jedis

1. jedis是java来访问redis数据库的api。
2. 新建项⽬:
添加依赖:junit,jedis2.8.0
打开redis服务器
3. TestJedis.java

@Bdfore
public void setUp() {
 j = new Jedis();
}
@After
public void tearDown() {
 if(j!=null){
 j.close();
 }
}
@Test
public void testConnection() {
 String ping = j.ping();
 Syso(ping);
 
 Syso(j.set("java","hello"));
 
 Map<> map = new HashMap<>();
 map.put("name","sansan");
 map.put("sid","001");
 Syso(j.hmset("sansan",set));
 Syso(j.hgetAll("sansan"));
 Syso(j.hget("sansan","sid"));
}
@Test
public void testPool () {
 GenericObjectPoolConfig config = new JedisPool;
 //设置连接最⼤空闲数
 config.setrMaxIdle(19);
 //设置连接总数
 config.setMaxTotal(50);
 List<JdeidsSharedInfo> shared = new ArrayList<>();
 shard.add(new JedisShared());
 SharedJdeisPool pool = new SharedJedisPool(config,shard);
 SharedJedisPool jedis = pool.getResource();
 jedis.zrangeByScore("stus",0,100);
}

补充

  1. ⼆⼋定律:
  2. 概念:⽹站访问数据的特点⼤多数呈现在"⼆⼋定律":80%的业务访问集中在20%的数据上。
    这时为了减轻数据的压⼒和提⾼⽹站的数据访问速度,则可以使⽤缓存机制来优化⽹站。
  3. 热数据
  4. 访问频次:需要被频繁访问的数据
  5. 数据库:计算
  6. 冷数据:
  7. 访问频次:对于离线类不经常访问的数据,⽐如,企业备份数据,⽇志数据。
  8. 数据库:存储
  9. redis为什么这么快?
  10. 完全基于内存
  11. 数据结构简单
  12. 单线程单进程,避免上下⽂切换,不必考虑锁。
  13. 单个线程⾼效的处理多个连接请求(尽量减少⽹络 IO 的时间消耗)
  14. 为什么redis 单线程?
  15. 因为单线程已经很快了,不再需要多线程
  16. 但redis运⾏的时候不⽌⼀个线程的,⽐如持久化的时候会fork⼀个⼦进程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值