NoSQL——SSDB简介

SSDB 是一个 C/C++ 语言开发的高性能 NoSQL 数据库, 支持 KV, list, map(hash), zset(sorted set),qlist(队列) 等数据结构, 用来替代或者与 Redis 配合存储十亿级别列表的数据.

  • SSDB 是稳定的, 生产环境使用的, 已经在许多互联网公司得到广泛使用, 如奇虎 360, TOPGAME.
  • ssdb是一款类似于redis的NoSQL数据库,不过redis是基于内存的,服务器比较昂贵,ssdb则是基于硬盘存储的,很容易扩展,对于一些对速度要求不是太高的应用,还是不错的选择。
  • SSDB是一套基于LevelDB存储引擎的非关系型数据库(NoSQL),可用于取代Redis,更适合海量数据的存储。

一、缓存服务器的搭建

ssdb搭建缺陷是:没有docker安装文档 ,不带配置文件(dokcerHub)

1、ssdb配置文件准备

# ssdb-server config
 
# relative to path of this file, must exist
work_dir = /ssdb/var
pidfile = /run/ssdb.pid
 
server:
    #一定不建议ssdb配置密码,因为ssdb默认密码32位
	ip: 0.0.0.0 #允许所有人访问
	port: 8888
 
replication:
    binlog:yes
    sync_speed:-1
	slaveof:
		# sync|mirror, default is sync
		#type: sync
		#ip: 127.0.0.1
		#port: 8889
 
logger:
	level: info
	output: stdout
	rotate:
		size: 1000000000
 
leveldb:
	# in MB
	cache_size: 500
	# in MB
	write_buffer_size: 128
	# in MB
	compaction_speed: 100
	# yes|no
	compression: yes

 2、ssdb安装(docker)

docker run -d --name han_ssdb -p 8888:8888 -v /ssdb/var:/ssdb/var -v /config/ssdb.conf:/config/ssdb.conf leobuskin/ssdb-docker

  • -p:指定端口映射
  • -v:指定文件映射
  • -d:指定后台运行
  • --name:为docker容器命名

注:安装完后,使用firewalld打开需要提供支持的端口

3、ssdb客户端(可视化)

(1)首先查看容器的ip

docker   inspect   容器名

(2)ssdb-admin安装

docker run -d --env DB_CONFIG=172.17.0.2:8888 -p 5000:5000 jhao104/ssdb-admin

注:创建容器后,需要使用firewalld开启端口。此外还需要把DB_CONFIG的地址指成ssdb容器的地址

如果不能完成映射,重启doocker,完了再次重启全部容器

二、Java代码操作ssdb

1、导包

ssdb同样导的是redis的包

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

 2、容器类的测试(spring-boot-starter-test)

@RunWith(SpringRunner.class) //设置SpringRunner
@SpringBootTest(classes = AdminRun.class) //设置启动类,默认会扫包
public class HanRedis {
    @Resource
    RedisTemplate<String,String> redisTemplate;

    @Test
    public void handler() {
        redisTemplate.opsForValue().set("hanmh", "My name is hanmh!!!", 60, TimeUnit.SECONDS);
    }
}

执行后报错:

默认是字节流方式存进去的,不是字符流

3、数据存储报错解决

对RedisTemplate做一个序列化处理,再将其进行返回使用

@Resource
RedisTemplate<String, String> redisTemplate;
//返回序列化处理后的RedisTemplate
@Bean
RedisTemplate getRedisTemplate() {
    RedisSerializer<String> stringRedisSerializer = new StringRedisSerializer();
    redisTemplate.setKeySerializer(stringRedisSerializer);
    redisTemplate.setValueSerializer(stringRedisSerializer);
    return redisTemplate;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Star星屹程序设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值