初学Redis,redis配置、终端操作、界面操作、java连接redis。

举报
扶醉 发表于 2020/12/31 00:10:56 2020/12/31
【摘要】 1、Redis介绍   1.1、什么是NoSql     为了解决高并发、高可用、高可扩展。大数据存储等一些列问     提的产生的数据库结局方案。     NoSql,叫做非关系型数据库,他的全名Not only sql。它不能     替代关系型数据库,只能作为关系型数据库的一个良好补充。   1.2 什么是redis     redis是使用c语言开发的一个高性能键值数...

1、Redis介绍
  1.1、什么是NoSql
    为了解决高并发、高可用、高可扩展。大数据存储等一些列问
    提的产生的数据库结局方案。
    NoSql,叫做非关系型数据库,他的全名Not only sql。它不能
    替代关系型数据库,只能作为关系型数据库的一个良好补充。
  1.2 什么是redis
    redis是使用c语言开发的一个高性能键值数据库。redis可以
    通过一些键值类型来存储数据。
    String字符串类型
    map散列类型
    list列表类型
    set集合类型
    sortedset 有序集合类型
  1.3 redis启动

    三个文件:


将前两个解压到D盘redis目录下  

 

 

通过在终端cd /d  路径 找到redis解压目录
    在解压目录当中执行  redis-server.exe redis.conf

    redis默认自带16个子库,默认使用db0
    切换子库命令:select index

  1.4链接redis
    1、通过终端在redis路径下执行redis-cli.exe连接到redis(如上图)
        2、通过图形界面连接到redis

安装上面的第三个文件


     

 

3、jedis客户端
               支持java语言连接(后面写)
  1.5 redis的使用

终端命令:
     赋值:
       set  key  value
     取值:
       get  key
     取值并赋值
       getset key value
     设置/获取多个键值
        mset key value key value key value...
    mget key key key key ...
     删除
        del key
     数值的增减
        递增数字:当存储的字符串是整数时,redis提供了一个实用的命令
        incr,其作用是让当前键值递增,并返回递增后的值。
           
    incr key

    增加指定的整数
          incrby key increment

    递减数值
           decr num
    递减指定整数:
       decrby num decrement

2、其他命令
    1、向尾部追加值
    append的作用是向键值的末尾追加value.如果键不存在则将
    该键的值设置为value.
    
          append str1 "world!"
    
    
    2、获取字符串长度
    strlen命令返回值得长度,如果键不存在则返回0

    strlen key

    3、自增主键
    商品编号、订单采用string的递增数字特性生成
    定义商品编号key: items:id

    incr items:id

    4、赋值hset命令,不区分插入和更新操作,当执行插入操作时,
    hset命令返回1,当执行更新操作时返回0
    一次只能设置一个字段
        hset key filed value
    
    一次可以设置多个字段值
    hmset key1 filed1 value1  filed2 vlaue2 ...
    hmset user age 20 username lisi

    当字段不存在时赋值,类似hset,区别在于如果字段存在,该命令
    不执行任何操作
         hsetnx key file value
     hsetnx user age 30
        如果user中没有age字段则设置为30,否则不执行任何操作
     hsetnx user salary 20000
    
     5、取值
    一次只能获取一个字段值
     hget key filed    
    
    一次获取多个字段值
     hmget key filed1 filed2...
    
    一次获取所有字段
     hgetall key

    6、删除字段
    可以删除一个或多个字段,返回值是被删除的字段个数
    hdel key filed...

    7、增加数字
    hincrby key filed increment
 
    8、判断字段是否存在
    hexists key filed
     返回1说明该字段存在,0说明该字段不存在

    9、只获取字段名或字段值
    hkeys key  :查看key对象当中的所有字段名
        hvals key  :查看key对象当中的所有字段值

    10、获取字段数量
    hlen key :查看key对象当中的属性数量


 应用:
    1、存储商品信息
      商品字段:商品id、商品名称、商品描述、商品库存、商品评价
    hmset items:1001 id 3 name apple price 999.99

    获取商品信息
      hget items:1001 id 查询该条商品的指定列
          hgetall items:1001 查询该条商品的所有信息

 List:
   ArrayList和linkedList的区别
    ArrayList是使用数组存储数据,特点:查询快、增删慢
        LinkedList是使用双向链表存储数据,特点:增删快,查询慢
        但是查询链表两端数据比较快

    redis的list是采用链表来存储的,所以对于redis的list数据
     类型的操作,是操作List的两端数据来操作的

   1、向列表两端增加元素
    向列表左边增加元素
          lpush key value ...
    向列表右侧增加元素
     rpush key value ...

   2、 查看列表
    lrange命令是列表类型最常用的命令之一,获取列表中某一片段,返回     start、stop之间的所有元素(包含两端元素),索引从0开始,索引可以    是负数,如:'-1'代表最后边的一个元素    
 
    lrange key start stop

  3、从列表两端弹出元素
    LPOP命令从列表左边弹出一个元素,会分两步完成
    第一步:是将列表左边的元素从列表中删除
        第二步是返回被移除的元素值

    LPOP key
    RPOP key

   4、获取列表中的元素个数
          llen key


   5、删除列表中指定的值
      LREM 命令会删除列表中前count个值为value的元素,返回实际删除
    元素个数。根据count值得不同,该命令执行方式会有所不同
       当count>0时,lrem 会从列表左侧开始删除
       当count<0时,lrem 会从列表后边开始删除
       当count=0时,lrem 删除所有值为value元素

       lrem key count value

   6、获取/设置指定索引的元素值
    LINDEX key index
      设置指定索引的元素值
         lset list:1 1 5

命令请自行测试,贴出我测试的:


  
  1. D:\redis>redis-cli.exe
  2. 127.0.0.1:6379> SELECT 7
  3. OK
  4. 127.0.0.1:6379[7]> set str 123
  5. OK
  6. 127.0.0.1:6379[7]> get str
  7. "123"
  8. 127.0.0.1:6379[7]> getset str2 12345
  9. (nil)
  10. 127.0.0.1:6379[7]> get str2
  11. "12345"
  12. 127.0.0.1:6379[7]> mset str3 fuzui str3 wwze
  13. OK
  14. 127.0.0.1:6379[7]> mget str3 str3
  15. 1) "wwze"
  16. 2) "wwze"
  17. 127.0.0.1:6379[7]> del str3
  18. (integer) 1
  19. 127.0.0.1:6379[7]> del str
  20. (integer) 1
  21. 127.0.0.1:6379[7]> incr num
  22. (integer) 1
  23. 127.0.0.1:6379[7]> incr num
  24. (integer) 2
  25. 127.0.0.1:6379[7]> incrby num 3
  26. (integer) 5
  27. 127.0.0.1:6379[7]> incr num
  28. (integer) 6
  29. 127.0.0.1:6379[7]> incrby num 3
  30. (integer) 9
  31. 127.0.0.1:6379[7]> decr num
  32. (integer) 8
  33. 127.0.0.1:6379[7]> decrby num 4
  34. (integer) 4
  35. 127.0.0.1:6379[7]> append str2 world
  36. (integer) 10
  37. 127.0.0.1:6379[7]> get str2
  38. "12345world"
  39. 127.0.0.1:6379[7]> strlen str2
  40. (integer) 10
  41. 127.0.0.1:6379[7]> strlen dd
  42. (integer) 0
  43. 127.0.0.1:6379[7]> append str1 hello
  44. (integer) 5
  45. 127.0.0.1:6379[7]> get str1
  46. "hello"
  47. 127.0.0.1:6379[7]> incr items:id
  48. (integer) 1
  49. 127.0.0.1:6379[7]> incr items:id
  50. (integer) 2
  51. 127.0.0.1:6379[7]> incr items:id
  52. (integer) 3
  53. 127.0.0.1:6379[7]> hset user username wangze
  54. (integer) 1
  55. 127.0.0.1:6379[7]> hmset manager name fuzui sex female
  56. OK
  57. 127.0.0.1:6379[7]> hsetnx user username fuzui
  58. (integer) 0
  59. 127.0.0.1:6379[7]> hsetnx user age 22
  60. (integer) 1
  61. 127.0.0.1:6379[7]> hget user username
  62. "wangze"
  63. 127.0.0.1:6379[7]> hget user age
  64. "22"
  65. 127.0.0.1:6379[7]> hmget user username age
  66. 1) "wangze"
  67. 2) "22"
  68. 127.0.0.1:6379[7]> hgetall user
  69. 1) "username"
  70. 2) "wangze"
  71. 3) "age"
  72. 4) "22"
  73. 127.0.0.1:6379[7]> hdel user age
  74. (integer) 1
  75. 127.0.0.1:6379[7]> hgetall user
  76. 1) "username"
  77. 2) "wangze"
  78. 127.0.0.1:6379[7]> hset user age 22
  79. (integer) 1
  80. 127.0.0.1:6379[7]> hgetall user
  81. 1) "username"
  82. 2) "wangze"
  83. 3) "age"
  84. 4) "22"
  85. 127.0.0.1:6379[7]> hset user salary 18000
  86. (integer) 1
  87. 127.0.0.1:6379[7]> hgetall user
  88. 1) "username"
  89. 2) "wangze"
  90. 3) "age"
  91. 4) "22"
  92. 5) "salary"
  93. 6) "18000"
  94. 127.0.0.1:6379[7]> hincrby user age 2
  95. (integer) 24
  96. 127.0.0.1:6379[7]> hincrby user username 2
  97. (error) ERR hash value is not an integer
  98. 127.0.0.1:6379[7]> hexists user age
  99. (integer) 1
  100. 127.0.0.1:6379[7]> hexists user class
  101. (integer) 0
  102. 127.0.0.1:6379[7]> hkeys user
  103. 1) "username"
  104. 2) "age"
  105. 3) "salary"
  106. 127.0.0.1:6379[7]> hvals user
  107. 1) "wangze"
  108. 2) "24"
  109. 3) "18000"
  110. 127.0.0.1:6379[7]> hlen user
  111. (integer) 3
  112. 127.0.0.1:6379[7]> hmset items:1001 id 3 name a[[;e price 1399
  113. OK
  114. 127.0.0.1:6379[7]> hget items:1001 id
  115. "3"
  116. 127.0.0.1:6379[7]> hgetall items:1001
  117. 1) "id"
  118. 2) "3"
  119. 3) "name"
  120. 4) "a[[;e"
  121. 5) "price"
  122. 6) "1399"
  123. 127.0.0.1:6379[7]> hmset items:1001 name apple
  124. OK
  125. 127.0.0.1:6379[7]> hgetall items:1001
  126. 1) "id"
  127. 2) "3"
  128. 3) "name"
  129. 4) "apple"
  130. 5) "price"
  131. 6) "1399"
  132. 127.0.0.1:6379[7]> lpush list:1 1 2 3 4 5
  133. (integer) 5
  134. 127.0.0.1:6379[7]> rpush list:1 a b c d e
  135. (integer) 10
  136. 127.0.0.1:6379[7]> lrange list:1 0 7
  137. 1) "5"
  138. 2) "4"
  139. 3) "3"
  140. 4) "2"
  141. 5) "1"
  142. 6) "a"
  143. 7) "b"
  144. 8) "c"
  145. 127.0.0.1:6379[7]> lrange list:1 0 -2
  146. 1) "5"
  147. 2) "4"
  148. 3) "3"
  149. 4) "2"
  150. 5) "1"
  151. 6) "a"
  152. 7) "b"
  153. 8) "c"
  154. 9) "d"
  155. 127.0.0.1:6379[7]> lpop list:1 0 1
  156. (error) ERR wrong number of arguments for 'lpop' command
  157. 127.0.0.1:6379[7]> lpop list:1
  158. "5"
  159. 127.0.0.1:6379[7]> lpop list:1
  160. "4"
  161. 127.0.0.1:6379[7]> rpop ;list:1
  162. (nil)
  163. 127.0.0.1:6379[7]> lrange list:1 0 -1
  164. 1) "3"
  165. 2) "2"
  166. 3) "1"
  167. 4) "a"
  168. 5) "b"
  169. 6) "c"
  170. 7) "d"
  171. 8) "e"
  172. 127.0.0.1:6379[7]> rpop list:1
  173. "e"
  174. 127.0.0.1:6379[7]> llen list:1
  175. (integer) 7
  176. 127.0.0.1:6379[7]> lrem list:1 2 2
  177. (integer) 1
  178. 127.0.0.1:6379[7]> lrangger list:1 0 -1
  179. (error) ERR unknown command 'lrangger'
  180. 127.0.0.1:6379[7]> lrange list:1 0 -1
  181. 1) "3"
  182. 2) "1"
  183. 3) "a"
  184. 4) "b"
  185. 5) "c"
  186. 6) "d"
  187. 127.0.0.1:6379[7]> lindex list:1 3
  188. "b"
  189. 127.0.0.1:6379[7]> lset list:1 4 w
  190. OK
  191. 127.0.0.1:6379[7]> lrange list:1 0 -1
  192. 1) "3"
  193. 2) "1"
  194. 3) "a"
  195. 4) "b"
  196. 5) "w"
  197. 6) "d"
  198. 127.0.0.1:6379[7]>
  199. [点击并拖拽以移动]

这只是一小部分命令~

使用java连接redis:

1.eclipse创建一个java project

2.导包

3. 创建test类


  
  1. import org.junit.Test;
  2. import redis.clients.jedis.Jedis;
  3. import redis.clients.jedis.JedisPool;
  4. public class JedisTest {
  5. @Test
  6. public void jedisClient() {
  7. //使用该对象连接到redis
  8. Jedis jedis = new Jedis("localhost",6379);
  9. //在redis当中存值
  10. jedis.set("s2", "789456");
  11. //通过redis取值
  12. String result = jedis.get("s2");
  13. System.out.println(result);
  14. //关闭redis连接对象
  15. jedis.close();
  16. }
  17. @Test
  18. public void getValues() {
  19. //使用该对象连接到redis
  20. Jedis jedis = new Jedis("localhost",6379);
  21. //在redis当中存值
  22. jedis.set("s2", "789456");
  23. //通过redis取值
  24. String result = jedis.get("s2");
  25. System.out.println(result);
  26. //关闭redis连接对象
  27. jedis.close();
  28. }
  29. @Test
  30. //使用jedis连接池连接redis服务器
  31. public void jedisPool() {
  32. JedisPool pool = new JedisPool("localhost",6379);
  33. //通过连接池获取jedis
  34. Jedis jedis = pool.getResource();
  35. String result = jedis.get("s2");
  36. System.out.println(result);
  37. //关闭jedis客户端
  38. jedis.close();
  39. }
  40. }

4.测试

 

5.使用spring+redis

(1)导入spring相关包

(2)配置spring配置文件applicationContext.xml


  
  1. <!-- 连接池配置 -->
  2. <bean id = "jedisPoolConfig" class = "redis.clients.jedis.JedisPoolConfig">
  3. <!-- 最大连接数 -->
  4. <property name="maxTotal" value="100000"></property>
  5. <!-- 最大空闲数 -->
  6. <property name="maxIdle" value="10000"></property>
  7. </bean>
  8. <!-- 连接redis -->
  9. <bean id = "jedisPool" class = "redis.clients.jedis.JedisPool" destroy-method="close">
  10. <constructor-arg name = "poolConfig" ref = "jedisPoolConfig "></constructor-arg>
  11. <constructor-arg name = "host" value = "localhost"></constructor-arg>
  12. <constructor-arg name = "port" value = "6379"></constructor-arg>
  13. </bean>

(3)写入一个方法


  
  1. @Test
  2. public void springJedisPool() {
  3. ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
  4. JedisPool pool = (JedisPool)ac.getBean("jedisPool");
  5. Jedis jedis = null;
  6. try {
  7. jedis = pool.getResource();
  8. jedis.set("name", "fuzui");
  9. String name = jedis.get("name");
  10. System.out.println(name);
  11. }catch(Exception e) {
  12. e.printStackTrace();
  13. }finally {
  14. if(jedis != null) {
  15. jedis.close();
  16. }
  17. }
  18. }

(4)测试

 

解释都在代码注释当中了~

学习redis的第一天.

 

redis下载:

csdn下载:1积分下载redis

百度网盘免费下载:redis工具
提取码:za75
 

java连接redis需要的包:

csdn下载:1积分下载jedis

百度网盘免费下载:jedis包
提取码:47ro
 

spring完整5.0.7包:

csdn下载:1积分下载spring包

百度网盘免费下载:spring包
提取码:2wtu
 

有问题或bug可以留言,一天内回复~

 

文章来源: fuzui.blog.csdn.net,作者:极客时代,版权归原作者所有,如需转载,请联系作者。

原文链接:fuzui.blog.csdn.net/article/details/84900879

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。