1. Mac OS下Cassandra的下载与安装
直接去Cassandra的官网即可下载到最新版的Cassandra
Cassandra官网下载地址
下载好了以后,直接解压放入你想放入的盘即可
不需要任何其余的操作.
2. Mac OS下Cassandra的使用
下载解压完成后,我们只需要打开终端,进入刚刚解压好的bin目录下
接着输入./cassandra
这里的命令后面可以跟上-f,代表在前端启动,意思就是窗口如果关闭,cassandra就停止运行,不加-f就是在后台运行.
输入./nodetool status可查看cassandra运行状态
看到UN即代表Cassandra已经正常启动了.
3.与Cassandra的交互
当Cassandra运行起来后,我们肯定要进行与它之间的交互,这时就要用到Cassandra自带的cqlsh一个Cassandra的驱动.
启动它也很简单,输入./cqlsh
然后就可以自己根据Cassandra的语法来写命令进行交互了,它的语法跟mysql的类似,这里还没有过多研究,暂时不写相关内容.
4.Mac OS下cqlsh驱动运行不了的坑
这个问题真是一言难尽,一点点的说吧.
首先如果想要运行cqlsh这个驱动,那么你的电脑必须装载python2.7和3.6以上的版本
它的官方文档里写的是2.7,但经过我的实验,只要是2.7+以内的版本都可以,mac是有自带的python版本,笔者的是2.7.16的版本,最开始没有看到官方文档的这个位置,我用3.7几的python试了好久,版本弄好了以后,接下来更大的坑出现了
不管我怎么操作,都是提示说我没有装cassandra的驱动还有python的路径不对,说让我安装驱动.
我当时就按着它的提示操作了.结果又坑了.
一直说python各种加密不支持找不到,我又又又在网上查了好久,中间尝试了各种方法,什么重新下载ssl,重载python,换python版本和环境,各种乱七八糟的我基本都试了一遍,结果还是不行.
让我有思路,成功解决这个问题的是看了这篇博客
OS X Python 3.7 openssl 终极冲突解决大法
这个博客虽然说的不是cassandra驱动相关的内容,但看了以后,我想会不会是我本地还装了有其它版本的python导致和自带的冲突了.然后我就决定删除之前那个高版本的python,只保留mac自带的版本
这是mac上python的安装位置,我是通过brew安装的,删除方法请参照下面这个博客
mac 卸载自己安装python和brew卸载python
删完之后,我重新运行了cqlsh,马上就可以使用了.
如果还不能使用,请参考下面这个博客:
macOS brew 更新后Python 2找不到md5
5.Cassandra可视化工具
可视化工具用习惯了,所以去网上找了一下cassandra的可视化工具,发现了一款蛮精致的工具,虽然是有收费版,但目前免费版已经够我使用了,下载地址放在下面
tablePlus官网下载地址
上图就是我连上本地的cassandra数据库以后的界面图
6.Cassandra与springboot的整合
springboot有提供cassandra的整合
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-cassandra</artifactId>
</dependency>
application.yml
spring:
data:
cassandra:
keyspace-name: pisx //数据库
#entity-base-packages: //集群
contact-points: 127.0.0.1 //ip地址
port: 9042 //端口
测试Demo
实体类和JPA的格式极其相似,完全可以照着jpa来使用
package com.example.cassandra.test;
import org.springframework.data.cassandra.core.mapping.Column;
import org.springframework.data.cassandra.core.mapping.PrimaryKey;
import org.springframework.data.cassandra.core.mapping.Table;
/**
* @Author:wzp
* @Date:Created in 3:13 PM 2020/5/9
* @Description:
*/
@Table("user")
public class User {
private static final long serialVersionUID = 3531754743416202852L;
/**
* 存储主键
*/
@PrimaryKey
private Integer id;
@Column(value = "address")
private String address;
@Column(value = "user_name")
private String userName;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
Dao 这个地方可以注意一下,引入了CassandraTemplate这个类,大致点开源码看了一下,其实和jpa那种模式差不多,提供一个模板让你使用crud的各种方法,详情请看官方文档
springboot-Cassandra
package com.example.cassandra.test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.cassandra.core.CassandraTemplate;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public class UserDao{
@Autowired
private CassandraTemplate cassandraTemplate;
public List<User> getAll() {
return cassandraTemplate.select("SELECT ID, user_name ,address FROM user", User.class);
}
}