web核心 16-redisredis可视化工具使用jedis操作redis

    xiaoxiao2022-07-07  167

    Redis(缓存技术)

    概述

    Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库

    为什么要使用redis?

    场景: 在企业级开发,需要完成导航条的数据,但是导航条的数据一般都是来源于数据库,只要每个人过来看到导航条的数据,都意味着连接了一次数据库,如果有1w人,需要连1w次数据库,在这里,我们发现所有人连接数据库拿到的数据都是一样的,也就意味着这个导航条的数据不是时时更新的数据,既然所有人看到的都一样,那有没有什么更好的方式去解决频繁操作数据库带来效率低的问题 方案: 让第一个访问的人去mysql数据库先获取一份,然后放入内存中,剩下所有的人再去内存中获取即可 解决:使用nosql数据库(redis)解决(缓存技术,memchace) 好处:解决频繁访问数据库带来效率低的问题

    面试题:非关系数据库和关系型数据库的区别?

    关系型数据库:mysql oracle db2 sqlserver.. 特点:数据都在硬盘上,有着表的表的概念,表和表之间有着关系(1vN NvN) 优点:数据的安全性和完整性都高 缺点: 读取慢 非关系型数据库:redis 特点:数据都在内存中,没有表的概念,只有键值对的概念 key(String)=value(5种) 优点:读取极快 缺点:数据的安全性和完整性都不高 if(redis==null){ mysql redis }else{ redis } 企业开发:关系型数据库和非关系型数据库是相辅相成的

    redis的应用场景?

    1 新闻内容 2 聊天室好友 3 12306

    安装

    官网下载地址:http://redis.io/download window版:redis-2.8.9.zip解压即可 解压即安装

    双击即打开 开启服务,加载配置文件

    redis的数据类型

    redis数据支持的值类型: key键都是字符串 value值是5种

    1 字符串类型(掌握) String=String 例如:s1 "abcd" 2 散列类型(掌握) String=hash 例如:s2 username jack 3 列表类型(了解) String=list 例如:s3 a b c d a b c d 无序可以重复 4 集合类型(了解) String=set 例如:s4 a b c d 无序不能重复 5 有序集合类型(了解) String=zset 例如:s5 1 a 2 b 4 c 4 d 5 e

    字符串类型(掌握)

    设置 set key value 存特殊类型,value加双引号 获取 get key 删除 del key

    散列类型(掌握)

    把值看成map集合(适合存储对象的属性值) 例如: user1 username jack

    设置单个 hset key subkey subvalue :设置一个键值对 获取单个 hget key subkey:获取一个子键的值 设置多个 hmset key subkey1 subvalue1 subkey2 subvalue2 ...:设置多个键值对 获取多个 hmget key subkey1 subkey2...:获取多个子键的值 获取所有属性以属性值 hgetall key:获取指定key值的所有信息 删除-子键 hdel key subkey1 subkey2 ... 删除 del key

    redis视图化工具的安装

    redis多面管理器

    列表类型(了解)

    两端的设置: lpush key member1 member2.. : 往左边开始插入 lpush l1 a b c d d c b a rpush key member1 member2.. :往右边开始插入 rpush l2 a b c d a b c d lrange key startindex endindex:查看 例如:lrange key 0 -1 :全查 两端的删除: lpop key :左边弹出一个 rpop key :右边弹出一个

    集合类型(无序且唯一)(了解)

    sadd key member1 member2 :设置 srem key member1 member2 :删除 smembers key :查看

    扩展:有序集合类型(有序且唯一的)(了解)

    条件:必须要有一个数值来与之关联,因为要通过这个数值来排序

    zadd key score1 value1 score2 value2...: 设置添加 zrem key value1 value2... :删除指定成员 zcard key :展示元素的长度 zscore key value :获取成员的数字

    redis通用的操作(掌握)

    1 keys *:查询所有的key 2 exists key:判断是否有指定的key 若有返回1,否则返回0 3 rename key 新key:重命名 4 type key:判断一个key的类型 5 del key :删除

    扩–多数据库操作(掌握)

    select index:切换库 move key 指定数据库: 将当前库的数据移动到指定库中 dbsize: 返回当前库中有多少个key flushdb:清空当前数据库数据 flushall:清空当前实例下所有的数据库数据

    redis的持久化(了解)

    持久化: 就是将数据从内存保存到硬盘

    1 rdb(快照方式) 默认开启的 redis.windows.conf 查save 保存策略: # after 900 sec (15 min) if at least 1 key changed 15分钟内存中有一个,往硬盘中存一次 # after 300 sec (5 min) if at least 10 keys changed 5分钟内存中有10个,往硬盘中存一次。 # after 60 sec if at least 10000 keys changed 1分钟有10000个,往硬盘中存一次

    2 aof(配置文件命令方式) 默认不开启 若要开启,必须修改配置文件redis.windows.conf 搜appendonly appendonly yes 保存策略: # appendfsync always 每次都写入 # appendfsync everysec 每秒写入 appendfsync no 不写入

    java代码操作redis数据库数据(重点)

    java —jdbc —mysql

    java-- -jedis- — redis

    使用步骤:

    1.导入jar包 2.创建jedis对象 new Jedis(ip,端口) 3.通过jedis操作redis数据库 4.释放资源

    当value为String类型时 当value为散列类型时 javadiamante操作redis数据库 取: jedis的pool

    javadiamante操作redis数据库 取: javadiamante操作redis数据库 删: jedis的优化1:

    jedis的优化2: 配置文件redis.properties 使用连接池优化: // 创建数据源的配置对象 JedisPoolConfig config = new JedisPoolConfig(); // 配置初始化连接 config.setMaxTotal(1000); // 配置空闲时期的最大连接 config.setMaxIdle(5); …

    // 创建一个连接池 JedisPool pool = new JedisPool(config, "192.168.2.132",6379); // 获取jedis对象 Jedis jedis = pool.getResource();

    从redis中获取导航条的数据

    1 导包 2 导工具包 3 导配置文件 4 写代码 从redis中获取非常快 jedisUtils

    package cn.itcast.utils; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; import java.util.ResourceBundle; public class JedisUtils { private static JedisPool jedisPool=null; static { // 加载配置文件 properties // 会自动去src下自己后缀名为properties的文件 ResourceBundle rb = ResourceBundle.getBundle("redis"); String url = rb.getString("url"); int port = Integer.parseInt(rb.getString("port")); int maxtotal = Integer.parseInt(rb.getString("maxtotal")); int maxidle = Integer.parseInt(rb.getString("maxidle")); JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPoolConfig.setMaxTotal(maxtotal); jedisPoolConfig.setMaxIdle(maxidle); jedisPool = new JedisPool(jedisPoolConfig,url,port); } // 从jedis的连接池中获取jedis public static Jedis getJedis(){ Jedis jedis = jedisPool.getResource(); return jedis; } }

    redis.properties

    url=localhost port=6379 maxtotal=100 maxidle=10
    最新回复(0)