数据库认识
1、关系型数据:MySQL(开源免费):表与表之间,字段与字段有一定关联性,是密不可分的
2、非关系型数据库:redit、mongoDB,与关系型不同,没有严格的关联性
速度对比:非关系型数据的速度较快,基于内存
字段限制:关系型数据必须要有值
存储稳定性:关系型数据库比较稳定,一般不会丢失数据。
比较:关系型数据库中的字段与字段之间是有一定关系的,所以有些可以不用有value的字段,使用关系型数据库,这个字段要占一定的空间,而非关系型数据库不一样
非关系型数据的作用
1、分析特点:速度快(基于内存),没有字段要求,可能出现数据的丢失(重启)
2、非关系数据库的用处:将不经常使用的数据存储起来,用户在查看的时候直接访问数据库读取数据,当作缓存数据库使用。
效率非常快,是C语言开发的
Redis
1.是非关系型数据库
2.key-value型数据库
3.支持五种数据格式 : String、List、Set、ZSet、Hash
4.基于C语言开发
5.基于内存也可以持久化的数据库
Redit下载、安装
连接好finashell,使用wget命令来下载redis压缩包,
mv 包名 想要放到的目录
tar -zxvf 包名 解压
#编译安装
make
# 启动服务
./src/redis-server
异常处理
cc: 未找到命令
yum install gcc -y
jemalloc/jemalloc.h 没有那个文件或目录
make MALLOC=libc
Redis 默认端口号
6379
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yJXiFHcn-1591208169842)(C:\Users\Asus\AppData\Roaming\Typora\typora-user-images\image-20200602101828909.png)]
Redis String操作命令
[root@localhost ~]# cd /usr/local/redis/src/
#开启服务后,新开一个窗口,远程连接
[root@localhost src]# ./redis-cli
#存值
127.0.0.1:6379> set name zhangsan
OK
127.0.0.1:6379> get name
"zhangsan"
#修改值
127.0.0.1:6379> set name lisi
OK
127.0.0.1:6379> get name
"lisi"
#删除
127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379>
Redis hash操作命令
#hset 存值
127.0.0.1:6379> hset user id 1 name jing age 18 address guizhou
(integer) 4
#获取对象中的某一个字段
127.0.0.1:6379> hget user id
"1"
# HGETALL 获取Hash字段中所有的数据
127.0.0.1:6379> HGETALL user
1) "id"
2) "1"
3) "name"
4) "jing"
5) "age"
6) "18"
7) "address"
8) "guizhou"
# 获取字段所有的值
127.0.0.1:6379> HVALS user
1) "1"
2) "jing"
3) "18"
4) "guizhou"
#获取所有的字段
127.0.0.1:6379> HKEYS user
1) "id"
2) "name"
3) "age"
4) "address"
#添加字段
127.0.0.1:6379> hset user love langqiu
(integer) 1
127.0.0.1:6379> HGETALL user
1) "id"
2) "1"
3) "name"
4) "jing"
5) "age"
6) "18"
7) "address"
8) "guizhou"
9) "love"
10) "langqiu"
127.0.0.1:6379> hset user love zuqiu
(integer) 0
127.0.0.1:6379> HGETALL user
1) "id"
2) "1"
3) "name"
4) "jing"
5) "age"
6) "18"
7) "address"
8) "guizhou"
9) "love"
10) "zuqiu"
# 根据key删除数据
127.0.0.1:6379> del user
(integer) 1
127.0.0.1:6379> HKEYS user
(empty list or set)
根据KEY查询数据
#查看Redis数据库中所有的KEY
keys *
List类型(栈结构–先进后出)
# 添加数据
127.0.0.1:6379> LPUSH userList zhangsna lisi jingjing wangwu
(integer) 4
127.0.0.1:6379> LRANGE userList 0 1
1) "wangwu"
2) "jingjing"
127.0.0.1:6379> LPUSH userList lisi
(integer) 5
# 当中的值是可以重复的
127.0.0.1:6379> LRANGE userList 0 3
1) "lisi"
2) "wangwu"
3) "jingjing"
4) "lisi"
# 查询所有数据
127.0.0.1:6379> LRANGE userList 0 -1
1) "lisi"
2) "wangwu"
3) "jingjing"
4) "lisi"
5) "zhangsna"
SET 类型
#添加数据(自动完成去重)
127.0.0.1:6379> SADD userSet zhangsan lisi wanwu jingjing jingjing zhangsan
(integer) 4
127.0.0.1:6379> SRANDMEMBER userSet
"jingjing"
# 查询指定条数
127.0.0.1:6379> SRANDMEMBER userSet 4
1) "zhangsan"
2) "wanwu"
3) "jingjing"
4) "lisi"
# 遍历
127.0.0.1:6379> SMEMBERS userSet
1) "zhangsan"
2) "jingjing"
3) "lisi"
4) "wanwu"
ZSet类型
定义了一种排序规则:分数score
#添加数据
127.0.0.1:6379> ZADD menuList 1 lisi 0.5 jigjing 1.25 jingjing 2.25 liang
(integer) 4
#遍历数据
127.0.0.1:6379> ZRANGE menuList 0 -1
1) "jigjing"
2) "lisi"
3) "jingjing"
4) "liang"
Java使用数据库
RedisConfig配置 (src下)
vim redis.config
1.任何IP地址都可以访问
bind 0.0.0.0
2.加入密码(36%)
requirepass 123456
#结束进程后,加载配置文件
[root@localhost src]# ./redis-server ../redis.conf
查看Linux进程
#查看进程
[root@localhost redis]# ps -ef | grep redis
root 17580 65779 0 04:14 pts/3 00:00:00 grep --color=auto redis
root 63434 1 0 6月01 ? 00:00:23 ./redis-server *:6379
# 结束进程
[root@localhost redis]# kill -9 63434
[root@localhost redis]# ps -ef | grep redis
root 19347 65779 0 04:16 pts/3 00:00:00 grep --color=auto redis
Java连接Redis
public static void main( String[] args )
{
//连接
Jedis jedis = new Jedis("192.168.128.129");
//验证
jedis.auth("123456");
//验证是否连接上
// String name = jedis.get("name");
// System.out.println(name);
List<String> userList = jedis.lrange("userList", 0, -1);
System.out.println(userList);
jedis.hset("user","id","2");
String hget = jedis.hget("user", "id");
System.out.println(hget);
//连接是否成功
// jedis.ping();
//关闭资源
jedis.close();
}
g> userList = jedis.lrange(“userList”, 0, -1);
System.out.println(userList);
jedis.hset(“user”,“id”,“2”);
String hget = jedis.hget(“user”, “id”);
System.out.println(hget);
//连接是否成功
// jedis.ping();
//关闭资源
jedis.close();
}