Redis

1.什么是Redis

1.1百度百科说法

Redisson pom配置_Redisson pom配置

1.2 Redis定义(No SQL 数据库)

Redis是一款高性能的No SQL的数据库,完全开源免费

  • 支持数据的持久化(RDB(默认) AOF两种方式)
  • 提供多种数据结构的存储
  • 支持数据的备份,master-slave(主从模式)模式数据备份

1.3 Redis支持的数据类型

  1. String (字符串)
  2. Hash (hash类型)
  3. List (列表类型)
    4.Set (集合类型)
  4. ZSet (Sorted Set 有序集合)

1.4.Redis优势

  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
  • 原子性- Redis所有操作都是原子性的(要么全部执行,要么不执行)

1.5 Redis命令

String类型
命令	    说明			        案例
set	     添加key-value		set username admin
get		 根据key获取数据		get username
strlen	 根据key获取值的长度	strlen key
exists	 判断key是否存在	    exists name (返回1存在 0不存在)
del		 删除redis中的key	del key
Keys	 查询符合条件的key    keys * 查询redis中全部的key
keys     					n?me 使用占位符获取数据
keys     					nam* 获取nam开头的数据   
mset	 赋值多个key-value	mset key1 value1 key2 value2 key3 value3 
mget 	 获取多个key的值		mget key1 key2
append	 对key的值进行追加   append key value
type	 检查某个key的类型   type key
select	 切换redis数据库	   select 0-15 redis中共有16个数据库
flushdb 	清空单个数据库   flushdb
flushall	清空全部数据库   flushall
incr	  自动加1	       incr key
decr	 自动减1 		   decr key
incrby	 指定数值添加	   incrby 10
decrby	 指定数值减	       decrby 10
expire	 key的生时间效(秒)  expire key 20 (20秒后失效)
pexpire	 key的失效时间(毫秒) pexpire key 2000(key 2000毫秒失效t)
ttl	     检查key的剩余存活时间	ttl key  -2数据不存在  -1该数据永不超时
persist	撤销key的失效时间	persist key

Hash类型
说明:可以用散列类型保存对象和属性值
例子:User对象{id:2,name:小明,age:19}
命令	说明	案例
hset	为对象添加数据	hset key field value
hget	获取对象的属性值	hget key field
hexists	判断对象的属性是否存在	HEXISTS key field
1表示存在  0表示不存在
hdel	删除hash中的属性	hdel user field [field ...]
hgetall	获取hash全部元素和值	HGETALL key
hkyes	获取hash中的所有字段	       HKEYS key
hlen	获取hash中所有属性的数量	hlen key
hmget	获取hash里面指定字段的值	hmget key field [field ...]
hmset	为hash的多个字段设定值	hmset key field value [field value ...]
hsetnx	设置hash的一个字段,只有当这个字段不存在时有效	HSETNX key field value
hstrlen	获取hash中指定key的值的长度	HSTRLEN key field
hvals	获取hash的所有值	HVALS user

List类型
说明:Redis中的List集合是双端循环列表,分别可以从左右两个方向插入数据.
List集合可以当做队列使用,也可以当做栈使用
队列:存入数据的方向和获取数据的方向相反
栈:存入数据的方向和获取数据的方向相同
命令	说明	案例
lpush	从队列的左边入队一个或多个元素	LPUSH key value [value ...]
rpush	从队列的右边入队一个或多个元素	RPUSH key value [value ...]
lpop	  从队列的左端出队一个元素	LPOP key
rpop	从队列的右端出队一个元素	RPOP key
lpushx	当队列存在时从队列的左侧入队一个元素	LPUSHX key value
rpushx 	当队列存在时从队列的右侧入队一个元素	RPUSHx key value
lrange	从列表中获取指定返回的元素	  LRANGE key start stop
Lrange key 0 -1 获取全部队列的数据
lrem	从存于 key 的列表里移除前 count 次出现的值为 value 的元素。 这个 count 参数通过下面几种方式影响这个操作:
•	count > 0: 从头往尾移除值为 value 的元素。
•	count < 0: 从尾往头移除值为 value 的元素。
•	count = 0: 移除所有值为 value 的元素。	 LREM list -2 “hello” 会从存于 list 的列表里移除最后两个出现的 “hello”。
需要注意的是,如果list里没有存在key就会被当作空list处理,所以当 key 不存在的时候,这个命令会返回 0。
Lset 	设置 index 位置的list元素的值为 value	LSET key index value

2. Redis使用

我个人是不大喜欢写一些概念上的知识.实操才是重点,那么我进入重点,本次使用是放在Linux操作系统的一个实操

2.1 Redis安装

  1. 软件的下载

Redis 官网: https://redis.io

  1. 上传到Linux安装
cd /usr/local/src # 打开Src目录
	rz <选择下载Redis.tar.gz> # 上传
	 tar -zxvf redis-5.0.4.tar.gz # 解压
  1. 解压完毕之后进行编译
make  # 编译
  1. 编译之后打开
  2. 修改一下redis.conf文件
    因为是在linux所以外界想要访问需要改如下的配置
vim redis.conf # 修改redis.conf文件

56行 注释127.0.0.1

Redisson pom配置_数据_02


88行 关掉保护模式(默认是Yes)

Redisson pom配置_Redisson pom配置_03


也不要忘记关掉linux防火墙(放行端口也行)

systemctl stop firewalld.service #关掉防火墙
  1. 在redis目录下运行这个Redis服务
redis-server redis.conf # 打开Redis服务
  1. 这样就运行可以了

    不放心的小伙伴还可以这么检查一下
ps -ef | grep redis # 抓取 Redis的端口号

Redisson pom配置_Redisson pom配置_04

  1. 最后我们可以写一段Java代码测试一下
public class TestRedis {
	
	/**
	 * 1.spring整合redis
	 * 报错说明:
	 * 	1).如果测试过程中报错 则检查redis配置文件  改3处
	 *  2).检查redis启动方式   redis-server redis.conf
	 *  3).检查Linux的防火墙
	 * 	做完的 测试其他命令.
	 */
	@Test
	public void testString01() {
		
		//1.创建jedis对象
		Jedis jedis = new Jedis("192.168.126.129", 6379);
		//2.操作redis
		jedis.set("a", "redis入门案例");
		String value = jedis.get("a");
		System.out.println(value);
	}

控制台输出

Redisson pom配置_redis_05


我们再来看一下这个Linux上的Redis有没这样的值

redis-cli p 6379 #Redis默认端口就是6379 可以不输入 
get a  # 获取这个key  a 的值

因为这个redis存储的特性 把中文转码存了 但是还是可以看到 Redis

Redisson pom配置_redis_06


这样Redis入门就完成啦!!