Redis
1.什么是Redis
1.1百度百科说法
1.2 Redis定义(No SQL 数据库)
Redis是一款高性能的No SQL的数据库,完全开源免费
- 支持数据的持久化(RDB(默认) AOF两种方式)
- 提供多种数据结构的存储
- 支持数据的备份,master-slave(主从模式)模式数据备份
1.3 Redis支持的数据类型
- String (字符串)
- Hash (hash类型)
- List (列表类型)
4.Set (集合类型)- 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安装
- 软件的下载
Redis 官网: https://redis.io
- 上传到Linux安装
cd /usr/local/src # 打开Src目录
rz <选择下载Redis.tar.gz> # 上传
tar -zxvf redis-5.0.4.tar.gz # 解压
- 解压完毕之后进行编译
make # 编译
- 编译之后打开
- 修改一下redis.conf文件
因为是在linux所以外界想要访问需要改如下的配置
vim redis.conf # 修改redis.conf文件
56行 注释127.0.0.1
88行 关掉保护模式(默认是Yes)
也不要忘记关掉linux防火墙(放行端口也行)
systemctl stop firewalld.service #关掉防火墙
- 在redis目录下运行这个Redis服务
redis-server redis.conf # 打开Redis服务
- 这样就运行可以了
不放心的小伙伴还可以这么检查一下
ps -ef | grep redis # 抓取 Redis的端口号
- 最后我们可以写一段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);
}
控制台输出
我们再来看一下这个Linux上的Redis有没这样的值
redis-cli p 6379 #Redis默认端口就是6379 可以不输入
get a # 获取这个key a 的值
因为这个redis存储的特性 把中文转码存了 但是还是可以看到 Redis
这样Redis入门就完成啦!!