koa-redis
安装session和redis
npm i koa-generic-session koa-redis
const session = require(‘koa-generic-session’)
const Redis = require(‘koa-redis’)
app.keys=[‘keys’,’keyskeys’]
app.use(session({
store:new Redis()
}))
安装session和redis
npm i koa-generic-session koa-redis
const session = require(‘koa-generic-session’)
const Redis = require(‘koa-redis’)
app.keys=[‘keys’,’keyskeys’]
app.use(session({
store:new Redis()
}))
http://www.mongoosejs.net/
npm i mongoose
自定mysql
““
@Modifying
@Transactional
有修改数据不要忘记加上
@Query(value =”select product_at,GREATEST(max(p1),max(p2), as max from ks12p where product_plan_id=?1 group BY product_at”,nativeQuery = true)
List<Map<String,Object>> findByKsEveryDayMax(Long product_plan_id);
List<Map<String,Object>> productAtMaxes = ks12pDao.findByKsEveryDayMax(3L);
productAtMaxes.forEach(p -> {
System.out.println(“map.entrySet():”+p.entrySet());
Iterator<Map.Entry<String, Object>> iterator1 = p.entrySet().iterator();
while (iterator1.hasNext()){
System.out.println(“iterator1:”+iterator1.next());
}
});
or
@Query(value = “select new com.xx.xx.CarTraceResult(a.plateNo, a.plateColor, a.typeName, a.parkName, max(a.time), count(a.id)) ” +
” from CarTraceRecordEntity a where a.plateNo = ?1 and a.plateColor = ?2 ” +
“and a.type = ?3 group by a.parkNo order by time desc “)
List
or
public interface ProductAtDayMax {
LocalDate getProductAt();
BigDecimal getMax();
}
@Query(value ="select product_at,GREATEST(max(p1),max(p2), as max from ks12p where product_plan_id=?1 group BY product_at",nativeQuery = true)
List<ProductAtDayMax> findByKsEveryDayMax(Long product_plan_id);
List
productAtMaxes.forEach(productAtDayMax -> {
log.info(“[{}] [{}]”,productAtDayMax.getProduct_at(), productAtDayMax.getMax());
});
““`
1:启用系统变量innodb_large_prefix
注意:光有这个系统变量开启是不够的。必须满足下面几个条件:
1:系统变量innodb_large_prefix为ON
2:系统变量innodb_file_format为Barracuda
3:ROW_FORMAT为DYNAMIC或COMPRESSED
mysql> show variables like '%innodb_large_prefix%';
mysql> set global innodb_large_prefix=on;
show variables like '%innodb_file_format%';
set global innodb_file_format=Barracuda;
对脚本进行修改,添加ROW_FORMAT=DYNAMIC
ALTER TABLE TEST ROW_FORMAT=DYNAMIC;
create table test (........) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
mysql_upgrade -uroot -p --force
vim /etc/my.cnf文件;
[mysqld]
skip-grant-tables
flush privileges;
set password for ‘root’@‘localhost’=password(‘Admin123@qwe’);
sudo systemctl restart mysqld
mysql –u root –p
确认时区
show variables like '%time_zone%';
set global time_zone = '+8:00'; ##修改mysql全局时区为北京时间,即我们所在的东8区
flush privileges; #立即生效
vim /etc/mysql/my.cnf
##在[mysqld]区域中加上
default-time_zone = '+8:00'
修改jdbc url连接数据库参数 添加serverTimezone=Asia/Shanghai参数
4.2.2-bionic, 4.2-bionic, 4-bionic, bionic
docker run -itd --name mongo -p 27017:27017 -v /home/mongo/data:/data/db --restart always mongo --auth
-auth:需要密码才能访问容器服务。
接着使用以下命令添加用户和设置密码,并且尝试连接。
$ docker exec -it mongo mongo admin
创建一个名为 admin,密码为 123456 的用户。
> db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'}]});
尝试使用上面创建的用户信息进行连接。
> db.auth('admin', '123456')
创建有可读写权限的用户. 对于一个特定的数据库, 比如'demo'
db.createUser({
user: 'test',
pwd: '123456',
roles: [{role: "read", db: "demo"}]
})
数据库的建立
use demo;
mongo 是否正常启动的校验
先写入一条数据
db.info.save({name: 'test', age: '22'})
查看写入的数据
db.info.find();
结果如下
{ "_id" : ObjectId("5c973b81de96d4661a1c1831"), "name" : "test", "age" : "22" }
远程连接的开启
在 `mongodb` 的容器当中
#更新源
apt-get update
# 安装 vim
apt-get install vim
# 修改 mongo 配置文件
vim /etc/mongod.conf.orig
将其中的
bindIp: 127.0.0.1
注释掉`# bindIp: 127.0.0.1` 或者改成`bindIp: 0.0.0.0` 即可开启远程连接
sudo docker pull mysql:5.6
sudo docker run -itd -p 3306:3306 --name mysql -v ~/mysql/data:/var/lib/mysql -v ~/mysql/conf:/etc/mysqll/conf.d -v ~/mysql/logs:/var/log/mysql -e MYSQL_ROOT_PASSWORD=PW123456 --restart always mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
PS:The default configuration for MySQL can be found in /etc/mysql/my.cnf, which may !includedir additional directories such as /etc/mysql/conf.d or /etc/mysql/mysql.conf.d. Please inspect the relevant files and directories within the mysql image itself for more details.
远程不能访问时需要进入docker本地客户端设置远程访问账号
$ sudo docker exec -it mysql bash
$ mysql -u root -p PW123456
mysql> grant all privileges on *.* to root@'%' identified by "password";
修改MySQL配置文件有两种方法:
一是进入容器,修改容器里的MySQL的配置文件,然后重新启动容器:
docker exec -it mysqlserver /usr/bin/bash
然后可以进入容器的命令行模式,接着修改 /etc/mysql/my.cnf 文件即可
二是挂载主机的mysql配置文件 -v /my/custom:/etc/mysql/conf.d
查看编码
show variables like 'character%';
show variables like 'collation_%';
https://hub.docker.com/_/redis/
docker run -itd --name redis -p 6379:6379 -v /home/redis/data:/data --restart always redis:5.0.7
<dependency>
<groupId> org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
spring:
redis:
host: localhost
port: 6379
类型 | 简介 | 特性 | 场景 |
---|---|---|---|
String(字符串) | 二进制安全 | 可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512M | — |
Hash(字典) | 键值对集合,即编程语言中的Map类型 | 适合存储对象,并且可以像数据库中update一个属性一样只修改某一项属性值(Memcached中需要取出整个字符串反序列化成对象修改完再序列化存回去) | 存储、读取、修改用户属性 |
List(列表) | 链表(双向链表) | 增删快,提供了操作某一段元素的API | 1,最新消息排行等功能(比如朋友圈的时间线) 2,消息队列 |
Set(集合) | 哈希表实现,元素不重复 | 1、添加、删除,查找的复杂度都是O(1) 2、为集合提供了求交集、并集、差集等操作 | 1、共同好友 2、利用唯一性,统计访问网站的所有独立ip 3、好友推荐时,根据tag求交集,大于某个阈值就可以推荐 |
Sorted Set(有序集合) | 将Set中的元素增加一个权重参数score,元素按score有序排列 | 数据插入集合时,已经进行天然排序 | 1、排行榜 2、带权重的消息队列 |