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

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

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

​

D:\redis>redis-cli.exe
127.0.0.1:6379> SELECT 7
OK
127.0.0.1:6379[7]> set str 123
OK
127.0.0.1:6379[7]> get str
"123"
127.0.0.1:6379[7]> getset str2 12345
(nil)
127.0.0.1:6379[7]> get str2
"12345"
127.0.0.1:6379[7]> mset str3 fuzui str3 wwze
OK
127.0.0.1:6379[7]> mget str3 str3
1) "wwze"
2) "wwze"
127.0.0.1:6379[7]> del str3
(integer) 1
127.0.0.1:6379[7]> del str
(integer) 1
127.0.0.1:6379[7]> incr num
(integer) 1
127.0.0.1:6379[7]> incr num
(integer) 2
127.0.0.1:6379[7]> incrby num 3
(integer) 5
127.0.0.1:6379[7]> incr num
(integer) 6
127.0.0.1:6379[7]> incrby num 3
(integer) 9
127.0.0.1:6379[7]> decr num
(integer) 8
127.0.0.1:6379[7]> decrby num 4
(integer) 4
127.0.0.1:6379[7]> append str2 world
(integer) 10
127.0.0.1:6379[7]> get str2
"12345world"
127.0.0.1:6379[7]> strlen str2
(integer) 10
127.0.0.1:6379[7]> strlen dd
(integer) 0
127.0.0.1:6379[7]> append str1 hello
(integer) 5
127.0.0.1:6379[7]> get str1
"hello"
127.0.0.1:6379[7]> incr items:id
(integer) 1
127.0.0.1:6379[7]> incr items:id
(integer) 2
127.0.0.1:6379[7]> incr items:id
(integer) 3
127.0.0.1:6379[7]> hset user username wangze
(integer) 1
127.0.0.1:6379[7]> hmset manager name fuzui sex female
OK
127.0.0.1:6379[7]> hsetnx user username fuzui
(integer) 0
127.0.0.1:6379[7]> hsetnx user age 22
(integer) 1
127.0.0.1:6379[7]> hget user username
"wangze"
127.0.0.1:6379[7]> hget user age
"22"
127.0.0.1:6379[7]> hmget user username age
1) "wangze"
2) "22"
127.0.0.1:6379[7]> hgetall user
1) "username"
2) "wangze"
3) "age"
4) "22"
127.0.0.1:6379[7]> hdel user age
(integer) 1
127.0.0.1:6379[7]> hgetall user
1) "username"
2) "wangze"
127.0.0.1:6379[7]> hset user age 22
(integer) 1
127.0.0.1:6379[7]> hgetall user
1) "username"
2) "wangze"
3) "age"
4) "22"
127.0.0.1:6379[7]> hset user salary 18000
(integer) 1
127.0.0.1:6379[7]> hgetall user
1) "username"
2) "wangze"
3) "age"
4) "22"
5) "salary"
6) "18000"
127.0.0.1:6379[7]> hincrby user age 2
(integer) 24
127.0.0.1:6379[7]> hincrby user username 2
(error) ERR hash value is not an integer
127.0.0.1:6379[7]> hexists user age
(integer) 1
127.0.0.1:6379[7]> hexists user class
(integer) 0
127.0.0.1:6379[7]> hkeys user
1) "username"
2) "age"
3) "salary"
127.0.0.1:6379[7]> hvals user
1) "wangze"
2) "24"
3) "18000"
127.0.0.1:6379[7]> hlen user
(integer) 3
127.0.0.1:6379[7]> hmset items:1001 id 3 name a[[;e price 1399
OK
127.0.0.1:6379[7]> hget items:1001 id
"3"
127.0.0.1:6379[7]> hgetall items:1001
1) "id"
2) "3"
3) "name"
4) "a[[;e"
5) "price"
6) "1399"
127.0.0.1:6379[7]> hmset items:1001 name apple
OK
127.0.0.1:6379[7]> hgetall items:1001
1) "id"
2) "3"
3) "name"
4) "apple"
5) "price"
6) "1399"
127.0.0.1:6379[7]> lpush list:1  1 2 3 4 5
(integer) 5
127.0.0.1:6379[7]> rpush list:1 a b c d e
(integer) 10
127.0.0.1:6379[7]> lrange list:1 0 7
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
6) "a"
7) "b"
8) "c"
127.0.0.1:6379[7]> lrange list:1 0 -2
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
6) "a"
7) "b"
8) "c"
9) "d"
127.0.0.1:6379[7]> lpop list:1 0 1
(error) ERR wrong number of arguments for 'lpop' command
127.0.0.1:6379[7]> lpop list:1
"5"
127.0.0.1:6379[7]> lpop list:1
"4"
127.0.0.1:6379[7]> rpop ;list:1
(nil)
127.0.0.1:6379[7]> lrange list:1 0 -1
1) "3"
2) "2"
3) "1"
4) "a"
5) "b"
6) "c"
7) "d"
8) "e"
127.0.0.1:6379[7]> rpop list:1
"e"
127.0.0.1:6379[7]> llen list:1
(integer) 7
127.0.0.1:6379[7]> lrem list:1 2 2
(integer) 1
127.0.0.1:6379[7]> lrangger list:1 0 -1
(error) ERR unknown command 'lrangger'
127.0.0.1:6379[7]> lrange list:1 0 -1
1) "3"
2) "1"
3) "a"
4) "b"
5) "c"
6) "d"
127.0.0.1:6379[7]> lindex list:1 3
"b"
127.0.0.1:6379[7]> lset list:1 4 w
OK
127.0.0.1:6379[7]> lrange list:1 0 -1
1) "3"
2) "1"
3) "a"
4) "b"
5) "w"
6) "d"
127.0.0.1:6379[7]>

[点击并拖拽以移动]
​

这只是一小部分命令~

使用java连接redis:

1.eclipse创建一个java project

2.导包

3. 创建test类

import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

public class JedisTest {
	
	@Test
	public void jedisClient() {
		//使用该对象连接到redis
		Jedis jedis = new Jedis("localhost",6379);
		//在redis当中存值
		jedis.set("s2", "789456");
		//通过redis取值
		String result = jedis.get("s2");
		System.out.println(result);
		//关闭redis连接对象
		jedis.close();
		
	}
	@Test
	public void getValues() {
		//使用该对象连接到redis
				Jedis jedis = new Jedis("localhost",6379);
				//在redis当中存值
				jedis.set("s2", "789456");
				//通过redis取值
				String result = jedis.get("s2");
				System.out.println(result);
				//关闭redis连接对象
				jedis.close();
	}
	@Test
	//使用jedis连接池连接redis服务器
	public void jedisPool() {
		JedisPool pool = new JedisPool("localhost",6379);
		//通过连接池获取jedis
		Jedis jedis = pool.getResource();
		String result = jedis.get("s2");
		System.out.println(result);
		//关闭jedis客户端
		jedis.close();
		
	}
}

4.测试

 

5.使用spring+redis

(1)导入spring相关包

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

<!-- 连接池配置 -->
	<bean id = "jedisPoolConfig" class = "redis.clients.jedis.JedisPoolConfig">
		<!-- 最大连接数 -->
		<property name="maxTotal" value="100000"></property>
		
		<!-- 最大空闲数 -->
		<property name="maxIdle" value="10000"></property>		
	</bean>

<!-- 连接redis -->
	<bean id = "jedisPool" class = "redis.clients.jedis.JedisPool" destroy-method="close">
		<constructor-arg name = "poolConfig" ref = "jedisPoolConfig "></constructor-arg>
		<constructor-arg name = "host" value = "localhost"></constructor-arg>
		<constructor-arg name = "port" value = "6379"></constructor-arg>
	</bean>

(3)写入一个方法

@Test
	public void springJedisPool() {
		ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
		JedisPool pool = (JedisPool)ac.getBean("jedisPool");
		Jedis jedis = null;
		try {
			jedis = pool.getResource();
			jedis.set("name", "fuzui");
			String name = jedis.get("name");
			System.out.println(name);
		}catch(Exception e) {
			e.printStackTrace();
		}finally {
			if(jedis != null) {
				jedis.close(); 
			}
		}
	}

(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可以留言,一天内回复~

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客时代

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值