redis运用

本文介绍了Redis的概述,包括其作为键值对数据库的角色和NoSQL的使用场景。详细讲解了Redis的安装过程,以及如何通过CLI进行字符串、Key、List、Set等操作。此外,还探讨了Redis的持久化、配置以及淘汰策略,是学习和掌握Redis的实用指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Redis 的运用

1 Redis概述;(了解)

1.1Sql:操作数据库(关系型的)的标准语言

1.1.1关系数据库(rdbms):表与表之间有相应的关系(外键关联)–用于中小型的项目,数据量不大.关系型数据库:以关系(由行和列组成的二维表)模型为核心数据库.

1.2 Nosql:操作非关系型的数据库,主要用于大型的数据量和高并发.

2.1.2 键值对 key-value:Redis (缓存的数据库,处理大数据和日志系统)
列: colum store:Hbase. (分布式的文件系统)
文档: docment:mangoDb.
推荐系统:通过选择,进行推荐.

面试题:redis 和memcache—做缓存的区别

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FANmuqfG-1576752704277)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1576719342742.png)]

1.3 redis的使用场景

  1. 最多的就是缓存-redis

2)计时器的运用–(微博热点)

3)实时攻防系统–(银行网站登录)

4)有效期的运用 --秒杀 红包过期

5)自动去重

6)列队

7)消息订阅系统

2 安装Redis;(掌握)

2.1 安装(解压 傻瓜式安装)

3 Redis cli操作Redis;(掌握)

3.1 字符串操作的操作

set key value  //存值  set  name xxx
get key    //取值
mset  批量存值
mget 批量取值
incr 自增
decr 自减
incrBy  自增多少
decrBy //自减到多少

3.2 key 的操作

keys * //获取所有Key列表
del key s删除
expire key xx //设置key 的过期的时间(xx秒过期)
ttl key //查看过期时间
flushall 删除所有数据库(0-15共16个数据库)
flushdb  清除当前数据库
select index  查询  数据库

3.3 list的操作

lpush key value //将一个值/或是多个值插入列表头

rpush key value //将一个值/或者多个值插入列表未

lpop key //移除表头(左)

rpop key //移除尾(右)

lrange key start stop start:0 stop :-1 列表区间的值

lrem key count value //根据count值移除列表key中与参数 value 相等的元素count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。count = 0 : 移除表中所有与 value 相等的值

lindex key index index的索引元素

ltrim key start stop //对一个列表进行修剪

Redis怎么实现栈(FILO)和队列(FIFO)

list控制同一边进,同一边出就是栈

list控制一边进,另一边出就是队列.

3.4 set的操作

sadd key member  //将一个元素加入到集合key中
srem key member//将一个元素从集合中移除
smembers key    //返回集合 key 中的所有成员

3.5 hash的操作

hset key name value//添加一个name=>value键值对到key这个hash类型
hget key name //获取hash类型的name键对应的值
hmset key name1 key1 name2 key2 //批量添加name=>value键值对到key这个hash类型
hmget key name1 name2//批量获取hash类型的键对应的值
hkeys //返回哈希表 key 中的所有键
hvals //返回哈希表 key 中的所有值
hgetall //返回哈希表 key 中,所有的键和值
我们将user:1(name:zhangsan,age:18,sex:nv)的信息保存在hash表.

3.6 事务(了解)

multi  //标记一个事务块的开始。
exec   //执行所有事务块内的命令。
弱事务 : 日志
强事务 :同时成功 同时失败-- 金融数据
discard //取消事务,放弃执行事务块内的所有命令。
 Redis的事务在执行exec指令时,才批量执行操作,没有回滚操作

3.7 订阅/发布(了解)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a7OJAYN7-1576752704286)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1576730577276.png)]

3.8 密码的设置

1.通过命令动态调整密码
CONFIG SET 命令可以动态地调整 Redis 服务器的配置而无须重启,重启后失效
CONFIG SET requirepass 123456 //将密码设置为123456
CONFIG SET requirepass "" //清除密码
AUTH 123456  //输入密码进行认证

2.通过配置文件设置密码
在配置文件redis.widows.conf中增加一行代码
requirepass 123456
将密码123456设置到配置文件中,redis启动时加载该文件,即可启用密码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D4gMP39b-1576752704287)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1576730700829.png)]

配置文件的方式加密

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PeEEBZop-1576752704289)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1576735667733.png)]

4 Redis持久化;(掌握)

4.1 导包

4.2 运用

public class RedisTest {
    @Test
    public void testRedis() throws Exception{
        Jedis jedis = new Jedis("127.0.0.1", 6379, 1000);
        jedis.auth("123456");
        //执行操作
         jedis.set("test", "sansan");
         System.out.println(jedis.get("test"));
         //关闭连接
         jedis.close();
    }
    
    
    //pool 连接池
    @Test
    public void testConnnet() throws Exception{
        //创建jedisPOOL对象
        JedisPoolConfig config = new JedisPoolConfig();
        //2 做配置-四个
        config.setMaxIdle(2);
        config.setMaxTotal(10);
        config.setMaxWaitMillis(1*1000); //创建连接超时
        config.setTestOnBorrow(true);//获取连接是测试连接是否畅通
        JedisPool jedisPool = new JedisPool(config, "127.0.0.1", 6379, 1 * 1000, "123456");
        Jedis jedis = jedisPool.getResource();
        jedis.set("name", "郭大宝");
        String name = jedis.get("name");
        System.out.println(name);
        //redis 结构
       System.out.println(jedis.keys("*"));
       //string  的操作 Crud
        System.out.println(jedis.set("name","java"));//新增
        System.out.println(jedis.get("name"));//获取
        System.out.println(jedis.set("name","javaee"));//修改,将会覆盖之前的数据
        System.out.println(jedis.get("name"));//获取
        System.out.println(jedis.del("name"));//删除
        System.out.println(jedis.keys("*"));//查看所有的key
        //list 数组
         jedis.lpush("students", "1", "5", "3", "2", "5");
        List<String> list = jedis.lrange("students", 0, -1);
        System.out.println(list);
        //hash
        System.out.println("+=============================+");
        jedis.hset("stuMap","student","erbao");
       System.out.println(jedis.hget("stuMap","student"));
       //清除当前数据库
       jedis.flushDB();
       //排序
        jedis.lpush("nums","1","5","9","3","7","1");
        System.out.println(jedis.lrange("nums",0,-1));
        //默认是升序
        System.out.println(jedis.sort("nums"));
        //降序的写法
        SortingParams sortingParams = new SortingParams();
        sortingParams.desc();
        System.out.println(jedis.sort("nums",sortingParams));
        //对字母进行排序
        System.out.println("++++++++++");
        jedis.lpush("language","c++","java","php","test");
        SortingParams sortingParams1 = new SortingParams();
        sortingParams1.alpha();
        sortingParams1.desc();
        System.out.println(jedis.sort("language",sortingParams1));
        //释放连接
        jedis.close();
        //摧毁pool池
        jedisPool.destroy();
    }
    
    
    //事务的运用
    @Test
    public void testTranslation() throws Exception{
        Jedis jedis = new Jedis("127.0.0.1", 6379, 1000);
        jedis.auth("123456");
        jedis.flushDB();
        jedis.set("name","qinqin");
        jedis.set("age","18");
        System.out.println(jedis.mget("name","age"));
        Transaction multi = jedis.multi();
        multi.incr("name");
        multi.incr("age");
        List<Object> list = multi.exec();
        //弱事务  ,一个显示,一个不显示
        System.out.println(list);
        //关闭链接
        jedis.close();
    }
}

5Redis持久化配置

5.1配置:在redis.windows.conf 中配置

RDB模式
RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照,默认开启该模式.
如何关闭 rdb 模式:
save ""
# save 900 1      //至少在900秒的时间段内至少有一次改变存储同步一次
# save xxx
# save 60 10000


AOF追加模式
AOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集,默认关闭该模式。
如何开启aof模式:
appendonly yes         //yes 开启,no 关闭
# appendfsync always //每次有新命令时就执行一次fsync 
#这里我们启用 everysec
appendfsync everysec //每秒 fsync 一次
# appendfsync no      //从不fsync(交给操作系统来处理,可能很久才执行一次fsync)
其它的参数请大家看redis.conf配置文件详解

6 Redis淘汰策略;(掌握)

6.1Redis淘汰策略

淘汰一些数据,达到redis数据都是有效的。选择合适的淘汰策略进行淘汰。
volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰
volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰
volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值