nosql
cpu,内存和磁盘的关系
nosql简介
NoSQL(not only sql),泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模(京东,淘宝,天猫.......)和高并发的SNS(社交平台)类型的web2.0纯动态网站已经显得力不从心(基于磁盘存储),出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点(基于内存存储)得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类(文字,图片,视频,音频等等)带来的挑战,特别是大数据应用难题。
常见nosql框架
hbase,memcached,redis,mongodb等等
sql和nosql区别
redis简介和特点
简介
https://www.redis.net.cn/#google_vignette
Redis(Remote Dictionary Server远程字典服务)是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。redis使用C语言编写。
特点
速度快:读速度110000次/秒 写速度81000次/秒
支持事务:提供multi,exec,discard等关键字支持事务。
支持持久化:支持RDB和AOF持久化。
支持多种语言:
等等
单机版redis搭建
克隆虚拟机
修改IP和主机名称,重启
vi /etc/sysconfig/network-scripts/ifcfg-ens33
:15 修改IP 最后一位改为21
vi /etc/hostname
:1 修改主机名称 redis1
reboot
使用xshell链接
输入链接主机名称和IP
输入用户名和密码
修改颜色主题,编码方式,字体大小
上传redis安装包到redis1中
创建目录:
mkdir /opt/software
进入目录:
cd /opt/software/
使用xftp上传安装包到redis
ll
搭建redis
创建目录:
mkdir /usr/redis
源码安装redis,需要安装C语言的编译器:
yum -y install gcc-c++
(如果已经安装提示是最新版本)
解压redis到新建目录:
tar -xzvf /opt/software/redis-5.0.5.tar.gz -C /usr/redis/
进入解压目录:
cd /usr/redis/redis-5.0.5/
编译,安装: (PREFIX前缀,指定安装路径)
make && make install PREFIX=/usr/redis/
(时间久)
查看是否安装成功(有bin说明成功):
ls /usr/redis/
启动服务端,并使用客户端链接
非守护方式启动服务端:/usr/redis/bin/redis-server
启动客户端,链接服务器:
/usr/redis/bin/redis-cli
keys * (查看所有数据)
set a 1 设置一个key为a value为1
keys * (查看所有数据)
shutdown save 客户端关闭服务器,并且持久化数据
再次启动服务器,再次使用客户端链接:
set b 2
keys * (查看所有数据)
shutdown nosave 客户端关闭服务器,不持久化数据
再次链接,再次查看,发现没有b
守护方式启动服务端:
1,复制redis.conf文件
cp /usr/redis/redis-5.0.5/redis.conf /usr/redis/bin/
2,查看是否成功
ls /usr/redis/bin/
3,修改配置文件
vim /usr/redis/bin/redis.conf
4,修改136行
:136 回车 no->yes
:wq 保存退出
5,再次启动redis服务端:
/usr/redis/bin/redis-server /usr/redis/bin/redis.conf
6, 查看是否启动成功
ps -ef |grep redis (能看到redis-server进程就成功了)
7,再次使用客户端链接:
/usr/redis/bin/redis-cli
redis常用命令
和connection相关的
redis常用命令
5种数据类型
java的redis的API
简介
jedis 是redis java连接工具 ,引入jar包后,就可以使用java代码操作redis。
redis修改远程可以连接
vim /usr/redis/bin/redis.conf
:69 bind 127.0.0.1
把当前redis实例和本机127.0.0.1进行绑定,只能本机客户端进行连接
如果想让其他任何机器进行访问该实例,需要把该实例与当前主机IP进行绑定
:69 bind 192.168.xxx.41
从新启动服务
/usr/redis/bin/redis-server /usr/redis/bin/redis.conf
使用客户端直接连接时出错
/usr/redis/bin/redis-cli
连接要换为连接IP地址:
/usr/redis/bin/redis-cli -h 192.168.170.31
创建项目引入jar,编写代码
引入jar
<!-- jedis包 -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>4.2.2</version>
</dependency>
package com.aaa.jedis.demo;
import redis.clients.jedis.Jedis;
import java.util.Set;
/**
* @ fileName:ConncetRedisTest
* @ description:
* @ author:zhz
* @ createTime:2022/4/28 10:08
* @ version:1.0.0
*/
public class ConncetRedisTest {
public static void main(String[] args) {
//查看源码,会看到使用host和port的构造
Jedis jedis =new Jedis("192.168.170.31",6379);
//测试是否可以联通
String pingResult = jedis.ping();
System.out.println("是否通:"+pingResult);
if(!"PONG".equals(pingResult)){
System.out.println("连不通");
return;
}
System.out.println("连通");
//查询
Set<String> keyList = jedis.keys("*");
System.out.println("已经存储的key为:");
for (String key : keyList) {
System.out.println(key);
}
System.out.println("------------------------------");
//进行字符串操作
jedis.set("aaa", "111");
String aaa = jedis.get("aaa");
System.out.println(aaa);
//进行hash操作
//进行list操作
//....
//字符串 string
jedis.set("aaa", "111");
// 获取存储的数据并输出
System.out.println("redis 存储的字符串为: "+ jedis.get("aaa"));
在虚拟机里面测试,客户端链接
./redis-cli -h 192.168.182.20
//散列 hashmap
Map<String, String> map = new HashMap();
map.put("userName", "scott");
map.put("password", "tiger");
map.put("age", "100");
// 将map存入redis中
jedis.hmset("mapa", map);
// 取出redis中的map进行遍历
Map<String, String> userMap = jedis.hgetAll("mapa");
for (Map.Entry<String, String> item : userMap.entrySet()) {
System.out.println(item.getKey() + " : " + item.getValue());
}
// 列表 list
jedis.lpush("lista", "111");
jedis.lpush("lista", "222");
jedis.lpush("lista", "333");
// 获取存储的数据并输出
List<String> list = jedis.lrange("lista", 0 ,2);
for(int i=0; i<list.size(); i++) {
System.out.println("列表项为: "+list.get(i));
}
// 集合 set
jedis.sadd("course","java","c","c#","java","python");
// 自动去重
System.out.println(jedis.smembers("course"));
//有序集合 sorted set
Map<String,Double> map1 = new HashMap<>();
map1.put("python",2.0);
map1.put("java",1.0);
map1.put("bigdata",3.0);
map1.put("AI",4.0);
jedis.zadd("mysort", map1);
//正序排列
Set<String> mysort = jedis.zrange("mysort",0,-1);
System.out.println(mysort);
//Keys 实例
// 获取数据并输出
Set<String> keys = jedis.keys("*");
Iterator<String> it=keys.iterator() ;
while(it.hasNext()){
String key = it.next();
System.out.println(key);
}
}
}
标签:bin,redis,System,jedis,usr,println
From: https://www.cnblogs.com/xiaomubupi/p/18639377