• 外卖项目09---Redis了解


    目录

    Redis了解 141

    一、Redis入门 143

    1.1Redis简介 143

    1.2Redis下载与安装 143

    1.3Redis入门---Redis服务启动 144

    1.3.1Redis服务启动  

    1.3.2设置密码远程连接

    二、Redis数据类型 145

    三、Redis常用命令 146

    3.1Redis常用命令---字符串string操纵命令

    3.2Redis常用命令---哈希类型操作命令 147

    3.3Redis常用命令---列表List类型操作命令 148

    3.4Redis常用命令---集合类型&有序集合类型操作命令 149

    ​编辑3.5Redis常用命令---通用命令 150

    四、在Java中操作Redis 151

    4.1在Java中操作Redis介绍 151

    4.2使用Spring Data Redis操作Redi基础环境&设置序列化器(SpringBoot中使用Redis)152

    4.3在Java中操作Redis 使用Sping Data Redis操作Redis 数据类型操作(对应五种数据类型在SpringBoot中的操作) 153-155


    Redis了解 141

    Mysql:是将数据存到磁盘上,关系型数据库。实际上就是表的关系。

    内存的读取速度比磁盘的读取速度快

    Redis是讲数据存到内存上,非关系型数据库

    优点:Redis处理速度比Mysql快

    两者是相互补充的关系。

    什么是热点:

    热点就是短时间内会有大量用户点击或者使用的情况。

    一、Redis入门 143

    1.1Redis简介 143

    作用:当作缓存数据库使用。 

     

    1.2Redis下载与安装 143

     Linux版本的安装:

     gcc:是在Linux系统中,对c语言进行编译的一个指令

     Windows下Redis安装:

    1.3Redis入门---Redis服务启动 144

    1.3.1Redis服务启动  

    Linxu服务启动: 

    输入下面的指令:在所在的工作空间下启动就能够启动Redis服务

    步骤一:启动Redis服务

    步骤二:连接服务器redis-cli(先进入到文件所在工作空间下)

    步骤三:可以查询当前的Redis里面存在哪些key

     

     后台启动Redis服务程序步骤:

    步骤一:找到配置文件 

    步骤二:通过小技巧“/所要找的文件名称”

    就能够实现找到所需要的内容信息。

    步骤三:输入字母 “i”,变为插入模式,对文件进行修改

     注:将该部分的no修改为yes

    记得输入“:wq”保存并退出。

    步骤四:启动服务器,并要加上redis.config文件

    Window服务启动: 

     注:不需要密码校验。

    1.3.2设置密码远程连接

    Linxu系统设置客户端登陆密码:

    步骤一:在redis.conf文件夹下找到密码,并打开文件

     

     步骤二:修改密码,并保存

     实现步骤:

    方式一: 

    方式二:

    设置Redis可以被远程连接:

    修改redis.conf文件,最后按下esc键,进行保存并退出。 

    二、Redis数据类型 145

     

    三、Redis常用命令 146

    3.1Redis常用命令---字符串string操纵命令

    1、将数据值存到value中,使用set指令的数据结果都是字符串的形式。key相同的情况下,同时设置,后面的会覆盖前面的数据内容。

    2、获取

    3、将数据存到value中,延迟一段时间(可设置)就可以实现将数据进行清理掉

    作用:手机验证码的使用,存在一个有效期。

    4、作用:用于分布式锁的使用

    3.2Redis常用命令---哈希类型操作命令 147

     

    field:字段

    value:值

    3.3Redis常用命令---列表List类型操作命令 148

    1、从头部一个个按顺序向后插入

    3、移除操作,相当于是取出元素的功能

    3.4Redis常用命令---集合类型&有序集合类型操作命令 149

    2、查询集合中的元素,元素是无序排列的。没有顺序。

    4、查询两个集合的交集的部分。

    5、查询两个集合的并集,并表示输出出来。

    6、查询两个集合的差集。这个命令两个集合的顺序是有要求的,是前面的集合后面的集合

    结果:剩余的是:前面的集合中的内容在后面集合中不存在的内容。

     

     

    3.5Redis常用命令---通用命令 150

     

    四、在Java中操作Redis 151

    4.1在Java中操作Redis介绍 151

    步骤一:导入maven坐标

     

    步骤二:在IDEA中与Redis进行连接:分为三部分组成

    1. public class JedisTest {
    2. @Test
    3. public void testRedis(){
    4. //1、获取连接
    5. Jedis jedis = new Jedis("localhost",6379);
    6. //2、执行具体的操作
    7. //2-1String数据
    8. jedis.set("username","xiaoming");
    9. String value = jedis.get("username");
    10. System.out.println(value);
    11. // jedis.del("username");//删除key
    12. //2-2哈希值数据
    13. jedis.hset("myhash","addr","bj");
    14. String hValue = jedis.hget("myhash", "addr");
    15. System.out.println(hValue);
    16. //2-3查询所有的Redis的key
    17. Set keys = jedis.keys("*");
    18. for (String key : keys) {
    19. System.out.println(key);
    20. }
    21. //3、关闭连接
    22. jedis.close();
    23. }

    4.2使用Spring Data Redis操作Redi基础环境&设置序列化器(SpringBoot中使用Redis)152

     实际上:就是在SpringBoot中进行使用Redis 

     

     注:封装的是五类,对应的是Redis中的五种数据类型。

    .yaml设置: 

    Redis默认提供了16个数据库。默认选择的是0号数据库。

    如果需要修改的话,需要在对应的下面该文件进行修改处理。 

    RedisTemplate对象:

    该对象也没有进行服务层的创建,是因为下面这个配置好之后,SpringBoot就会自动配置好这个对象。

     实际操作:要选择.yaml中Redis配置好的对应的数据库号

    是对RedisTemplate序列化之后: 查询得到的是1)中的内容

    取消RedisTemplate的序列化操作,需要进行如下的处理:

    添加下面一个类:类的信息如下所示:创造自己需要的方法对象redisTemplate,默认的是有序列化的功能实现。(对key的序列化器进行的改造)

    4.3在Java中操作Redis 使用Sping Data Redis操作Redis 数据类型操作(对应五种数据类型在SpringBoot中的操作) 153-155

    第二大部分。 

     

    1. @SpringBootTest
    2. @RunWith(SpringRunner.class)
    3. public class SpringDataRedisTest {
    4. @Autowired
    5. private RedisTemplate redisTemplate;
    6. /**
    7. * 操作String类型数据
    8. */
    9. @Test
    10. public void testString(){
    11. redisTemplate.opsForValue().set("city123","beijing");
    12. String value = (String) redisTemplate.opsForValue().get("city123");
    13. System.out.println(value);
    14. redisTemplate.opsForValue().set("key1","value1",10l, TimeUnit.SECONDS);//设置延长时间,一段时间后内容会自动清空
    15. Boolean aBoolean = redisTemplate.opsForValue().setIfAbsent("city1234", "nanjing");
    16. System.out.println(aBoolean);
    17. }
    18. /**
    19. * 操作Hash类型数据
    20. */
    21. @Test
    22. public void testHash(){
    23. HashOperations hashOperations = redisTemplate.opsForHash();
    24. //存值
    25. hashOperations.put("002","name","xiaoming");
    26. hashOperations.put("002","age","20");
    27. hashOperations.put("002","address","bj");
    28. //取值
    29. String age = (String) hashOperations.get("002", "age");
    30. System.out.println(age);
    31. //获得hash结构中的所有字段
    32. Set keys = hashOperations.keys("002");
    33. for (Object key : keys) {
    34. System.out.println(key);
    35. }
    36. //获得hash结构中的所有值
    37. List values = hashOperations.values("002");
    38. for (Object value : values) {
    39. System.out.println(value);
    40. }
    41. }
    42. /**
    43. * 操作List类型的数据
    44. */
    45. @Test
    46. public void testList(){
    47. ListOperations listOperations = redisTemplate.opsForList();
    48. //存值
    49. listOperations.leftPush("mylist","a");
    50. listOperations.leftPushAll("mylist","b","c","d");
    51. //取值
    52. List mylist = listOperations.range("mylist", 0, -1);
    53. for (String value : mylist) {
    54. System.out.println(value);
    55. }
    56. //获得列表长度 llen
    57. Long size = listOperations.size("mylist");
    58. int lSize = size.intValue();
    59. for (int i = 0; i < lSize; i++) {
    60. //出队列
    61. String element = (String) listOperations.rightPop("mylist");
    62. System.out.println(element);
    63. }
    64. }
    65. /**
    66. * 操作Set类型的数据
    67. */
    68. @Test
    69. public void testSet(){
    70. SetOperations setOperations = redisTemplate.opsForSet();
    71. //存值
    72. setOperations.add("myset","a","b","c","a");
    73. //取值
    74. Set myset = setOperations.members("myset");
    75. for (String o : myset) {
    76. System.out.println(o);
    77. }
    78. //删除成员
    79. setOperations.remove("myset","a","b");
    80. //取值
    81. myset = setOperations.members("myset");
    82. for (String o : myset) {
    83. System.out.println(o);
    84. }
    85. }
    86. /**
    87. * 操作ZSet类型的数据
    88. */
    89. @Test
    90. public void testZset(){
    91. ZSetOperations zSetOperations = redisTemplate.opsForZSet();
    92. //存值
    93. zSetOperations.add("myZset","a",10.0);
    94. zSetOperations.add("myZset","b",11.0);
    95. zSetOperations.add("myZset","c",12.0);
    96. zSetOperations.add("myZset","a",13.0);
    97. //取值
    98. Set myZset = zSetOperations.range("myZset", 0, -1);
    99. for (String s : myZset) {
    100. System.out.println(s);
    101. }
    102. //修改分数
    103. zSetOperations.incrementScore("myZset","b",20.0);
    104. //取值
    105. myZset = zSetOperations.range("myZset", 0, -1);
    106. for (String s : myZset) {
    107. System.out.println(s);
    108. }
    109. //删除成员
    110. zSetOperations.remove("myZset","a","b");
    111. //取值
    112. myZset = zSetOperations.range("myZset", 0, -1);
    113. for (String s : myZset) {
    114. System.out.println(s);
    115. }
    116. }
    117. /**
    118. * 通用操作,针对不同的数据类型都可以操作
    119. */
    120. @Test
    121. public void testCommon(){
    122. //获取Redis中所有的key
    123. Set keys = redisTemplate.keys("*");
    124. for (String key : keys) {
    125. System.out.println(key);
    126. }
    127. //判断某个key是否存在
    128. Boolean itcast = redisTemplate.hasKey("itcast");
    129. System.out.println(itcast);
    130. //删除指定key
    131. redisTemplate.delete("myZset");
    132. //获取指定key对应的value的数据类型
    133. DataType dataType = redisTemplate.type("myset");
    134. System.out.println(dataType.name());
    135. }

  • 相关阅读:
    关于指针的一次错误调用
    【GO语言基础】函数
    [shell,hive] 在shell脚本中将hiveSQL分离出去
    sp-踩坑小记
    Splunk 输出取 / 分割符 之间的部分
    项目-五子棋双人对战:游戏房间的管理(5)
    解决合宙Esp32c3简约版不能Arduino ide开发的问题
    R语言使用plot函数可视化数据散点图,使用col参数自定义设置数据点的颜色、设置参数为颜色编码
    每日复盘-202406017
    FFT64点傅里叶变换verilog蝶形运算,代码和视频
  • 原文地址:https://blog.csdn.net/xiaoxixicc/article/details/128058576