赞
踩
无密码连接
- 连接redis
- redis-cli -h 127.0.0.1 -p 6379
-
- [root@redis ~]# redis-cli
- 127.0.0.1:6379> ping
- PONG
-
- 127.0.0.1:6379> get key
-
- 127.0.0.1:6379> info
redis-cli -h 127.0.0.1 -p 6379
redis 127.0.0.1:6379>auth password
选择redis db库,这个应用服务的配置文件里配置的。
选择db8库
redis 127.0.0.1:6379>select 8
redis 127.0.0.1:6379>get key
设置过期时间
redis 127.0.0.1:6379>expire key 10
看key的有效期
redis 127.0.0.1:6379>ttl key
- 查询精度是秒:
- 127.0.0.1:6379> ttl key
- 查询精度是毫秒:
- 127.0.0.1:6379> pttl key
清理过期可以
redis 127.0.0.1:6379> persist key
重命名key
redis 127.0.0.1:6379> rename key key2
查看key类型
redis 127.0.0.1:6379>type key
查key总数
redis 127.0.0.1:6379>dbsize
删除key
redis 127.0.0.1:6379>del key
批量删除sting key
/usr/local/redis/bin/redis-cli -a password -n 9 scan 0 match 'wantong:ZC*' COUNT 500000 | /usr/bin/xargs /usr/local/redis/bin/redis-cli -a password -n 9 del
批量操作 -a 密码 -n选择库
参考https://redis.io/topics/rediscli#scanning-for-big-keys
- #查询APP:COST:GET开头的所有key
- /usr/local/redis/bin/redis-cli -a password -n 9 --scan --pattern 'APP:COST:GET*'
-
- #查大的key,能到看key类型和大小
- /usr/local/redis/bin/redis-cli -a password -n 9 --bigkeys
-
- #查询APP:COST:GET开头的所有key数量
- /usr/local/redis/bin/redis-cli -a password -n 9 --scan --pattern 'APP:COST:GET*' |wc -l
-
- #在主库执行删除操作--在主库
-
- /usr/local/redis/bin/redis-cli -a password -n 9 --scan --pattern 'APP:COST:GET*' | /usr/bin/xargs /usr/local/redis/bin/redis-cli -a password -n 9 del
-
- #看内存
- free -h
内存碎片率优化
https://blog.csdn.net/gjc592/article/details/106543132
- redis 127.0.0.1:6379> config get maxmemory
- 1) "maxmemory"
- 2) "3221225472"
- redis 127.0.0.1:6379> config set maxmemory 4g
- OK
- redis 127.0.0.1:6379> config get maxmemory
- 1) "maxmemory"
- 2) "4294967296"
-
- ##不重启redis从RDB持久化切换到AOF持久化 和调整内存
- 127.0.0.1:6379> CONFIG SET appendonly yes #启用AOF
- 127.0.0.1:6379> CONFIG SET save "" #关闭RDB
-
- #别忘了在 redis.conf 配置, 程序会按原来的配置来启动服务器。
内存过大出现时,导致bgsave保存不了。
解决步骤:
1 如果内存不够了,添加交换内存
- #查看内存和硬盘
- free -h
- df -h
-
- #创建交换分区内存
- dd if=/dev/zero of=/data/swap1 bs=1024 count=8192000
- mkswap /app/swap1
- swapon /app/swap1
- swapon -s
- free -m
- vim /etc/fstab
- /data/swap1 swap swap defaults 0 0
2 rdr 工具分析dump.rdb文件key内存大小方式一推荐
下载地址:redis key内存分析器rdr
- #rz 上传
- mv rdr /usr/local/bin/
- #上传rdb文件和rdr同一目录下启动
- /usr/local/bin/rdr show -p 8080 *.rdb
-
- #浏览器访问
- http://localhost:8080/instance/dump.rdb
批量删除sting key,-a 密码 -n选择库从0-9库扫描,
/usr/local/redis/bin/redis-cli -a password -n 9 scan 0 match 'app_xt:XC0000*' COUNT 500000 | /usr/bin/xargs /usr/local/redis/bin/redis-cli -a password -n 9 del
安装rdr 解析工具方式二
- cd $HOME/go
- go get github.com/xueqiu/rdr
- cd src/github.com/xueqiu/rdr
- #修改端口 8080为58080
- vim main.go
- Value: 58080,
- go build .
-
- #启动rdr解析
- cp rdr /usr/bin/
- #启动
- rdr show ./dump.rdb
启停脚本
- #!/bin/bash
- . /etc/profile
- dumprdb_path="/data/software/redisdump"
- status(){
- port_pid=`netstat -tlunp | grep ':58080' | awk '{print $NF}' | awk -F '/' '{print $1}'`
- if [ "$port_pid" = "" ]; then
- echo -e "rdr已停止:\e[1;31m PID: $port_pid \e[0m"
- else
- echo -e "rdr已启动:\e[1;31m PID: $port_pid \e[0m"
- fi
- }
- start(){
- is_status_pid=`ps -eo pid,lstart,etime,cmd |grep -v grep| grep 'rdr show'|awk '{print $1}'`
- if [ "$is_status_pid" != "" ]; then
- echo -e "rdr已启动:\e[1;31m PID: $is_status_pid \e[0m"
- else
- echo -e "正在启动:\e[1;31m start rdr service \e[0m"
- rdr show $dumprdb_path/* >>/dev/null 2>&1 &
- sleep 8
- port_pid=`netstat -tlunp | grep ':58080' | awk '{print $NF}' | awk -F '/' '{print $1}'`
- if [ "$port_pid" = "" ]; then
- echo -e "rdr启动失败:\e[1;31m PID: $port_pid \e[0m"
- else
- echo -e "rdr已启动:\e[1;31m PID: $port_pid \e[0m"
- fi
- fi
- }
- stop(){
- is_status_pid=`ps -eo pid,lstart,etime,cmd |grep -v grep| grep 'rdr show'|awk '{print $1}'`
- if [ "$is_status_pid" = "" ]; then
- echo -e "rdr已停止:\e[1;31m PID: $is_status_pid \e[0m"
- else
- echo -e "正在停止:\e[1;31m stop rdr service \e[0m"
- netstat -tlunp | grep ':58080' | awk '{print $NF}' | awk -F '/' '{print $1}'|xargs kill
- sleep 3
- port_pid=`netstat -tlunp | grep ':58080' | awk '{print $NF}' | awk -F '/' '{print $1}'`
- if [ "$port_pid" = "" ]; then
- echo -e "rdr已停止:\e[1;31m PID: $port_pid \e[0m"
- else
- echo -e "rdr停止失败:\e[1;31m PID: $port_pid \e[0m"
- fi
- fi
- }
- restart(){
- stop
- start
- }
- help(){
- echo "参数: $0"
- echo " start"
- echo " stop"
- echo " restart"
- echo " status"
- }
- $1
-
-
- #浏览器访问
- http://localhost:58080/instance/dump.rdb

redis 127.0.0.1:6379> config get *
- CONFIG SET
- CONFIG SET parameter value
- CONFIG SET 命令可以动态地调整 Redis 服务器的配置(configuration)而无须重启。
- 你可以使用它修改配置参数,或者改变 Redis 的持久化(Persistence)方式。
- CONFIG SET 可以修改的配置参数可以使用命令 CONFIG GET * 来列出,所有被 CONFIG SET 修改的配置参数都会立即生效。
先停掉redis
find / -name dump.rdb
将dump.rdb文件复制到所在文件目录下
重启redis
配置文件设置
appendonly no
1 连接
- mongo --port 27017
- >use test
- >db.key
2 用户管理
- 创建超级用户管理,管理所有库。(必须use admin,再创建)
- $ mongo 27018
- use admin
- db.createUser(
- {
- user:"root",
- pwd:"root123456",
- roles:[{role:"root",db:"admin"}]
- }
- )
-
- 验证用户
- db.auth('root','root123456')
-
- 修改配置文件
- security:
- authorization: enabled
- javascriptEnabled: false
-
- 重启mongodb
-
- systemctl start mongod
- 或
- mongod -f /www/server/mongodb/config.conf (以root用户启动,参考下文故障)
-
- 登录验证
- mongo -uroot -proot123456 admin
- mongo -uroot -proot123456 43.248.189.234/admin

- 查看当前数据中有多少数据库
- show dbs
- 切换数据库
- use conf
- 写入
- db.test_collection.insert({x:1})
- 查询表集合
- show collections
- 查询
- db.test_collection.find();
-
- 创建数据库()
- use runoob
- db
- 我们刚创建的数据库 runoob 并不在数据库的列表中, 要显示它,需要向 runoob 数据库插入一些数据。
- > db.runoob.insert({"name":"test"})
-
-
- 删除数据库
- use runoob
- db.dropDatabase()
-
-
- 删除集合
- > use runoob
- switched to db runoob
- > db.createCollection("runoob") # 先创建集合,类似数据库中的表
- > show tables # show collections 命令会更加准确点
- runoob
- > db.runoob.drop()
- true
- > show tables
-
-
- 参考
- https://www.runoob.com/mongodb/mongodb-create-database.html

先通过shell连上服务器:
mongo
use admin
db.shutdownServer()
或者直接kill -15 <pid>,注意kill -9 可能会导致数据文件损坏
mongod -f /www/server/mongodb/config.conf 启动后,ps -ef|grep mongo 发现是root用户启动的。
然后用kill -9 结束mongo程。
systemctl start mongod 重启出现以下错误:
Job for mongod.service failed because the control process exited with error code. See "systemctl status mongod.service" and "journalctl -xe"
chkconfig network off
chkconfig network on
service NetworkManager stop
service NetworkManager start
以下的分析过程,没有解决问题
1 查看日志
tail -100f /var/log/mongodb/mongod.log
提示
[main] ERROR: Cannot write pid file to /var/run/mongodb/mongod.pid: Permission denied
2 查看数据目录和用户
ll /var/lib/mongo
chown -R mongod.mongod /var/lib/mongo
3 删除mongod.lock
find / -name mongod.lock
rm -rf /var/lib/mongo/mongod.lock
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。