页面“Redis批量删除key”与“Docker修改hosts方法”之间的差异

来自linux中国网wiki
(页面间的差异)
跳到导航 跳到搜索
 
→‎1
 
第1行: 第1行:
[[category:ops]] [[category:redis]] 
+
=1直接修改=
 +
直接进入容器中修改/etc/hosts
  
[[Redis-bigkeys]]
+
缺点:重启容器后,增加的内容会丢失
 
 
ulink
 
[https://cloud.tencent.com/developer/article/1530197 Redis 高效删除大key]
 
=redis cluster 批量删除key=
 
 
<pre>
 
<pre>
#June 19 2020  有空结果一下原来的版本再优化一下
 
cat redis_del_key.sh
 
#!/bin/bash
 
# Usage
 
#redis_list=("host:post" "host:post")
 
  
redis_list=( "172.16.200.12:7003" "172.16.200.7:7004" "172.16.200.7:7005" "172.16.200.13:7000" "172.16.200.13:7001" "172.16.200.12:7002")
+
NS1=apisns..com
#redis_list=( "172.16.200.13:7000" "172.16.200.13:7001" "172.16.200.12:7002")
+
NS2=webappsns..com
#redis_list=("172.16.200.7:7004")
 
password="3636password"
 
  
for info in ${redis_list[@]}
 
    do
 
        echo "开始执行:$info" 
 
        ip=`echo $info | cut -d : -f 1`
 
        port=`echo $info | cut -d : -f 2`
 
  
      for  loop in  `cat key.txt`
+
docker exec -i docker-compose-nuxt_nuxt-pc_1 sh -c "echo '114.55.202.3 ${NS1}'>>/etc/hosts"
        do
+
docker exec -i docker-compose-nuxt_nuxt-pc_1 sh -c "echo '114.55.202.3 ${NS2}'>>/etc/hosts"
        #echo $loop  |xargs -t -n1 redis-cli --h $ip -p $port -a $password -c del
 
        echo $loop  |xargs -t -n1 redis-cli -c -h $ip -p $port -a $password -c keys
 
        done
 
  
    done
+
docker exec -i docker-compose-nuxt_nuxt-pc_1 sh -c "cat /etc/hosts"
    echo "success done完成"
 
  
# cat key.txt
 
infnce:wonderfulCache
 
ext_info
 
  
 +
如何还原hosts
  
 +
cd /data/docker-compose-nuxt/
 +
docker-compose down && docker-compose up -d
  
#原来的版本
+
</pre>
  
del hello_user_*
+
=2=
 
+
<pre>
redis-cli keys
+
在docker-compose.yml文件中,通过配置参数extra_hosts实现。例如:
 
 
 
 
redis-cli keys "hello_user_*" | xargs redis-cli del
 
 
 
 
 
./redis-cli -h IP -p PORT -a PASSWORD keys 'key*' | xargs  ./redis-cli -h IP  -p PORT -a PASSWORD del
 
 
 
redis-cli    -c  -h    172.31.22.218  -p 7000  -a pass keys 'hello_user_*'| xargs -i redis-cli    -c  -h    172.31.22.218  -p 7000  -a pass  del {}
 
redis-cli    -c  -h    172.31.22.218  -p 7001  -a pass keys 'hello_user_*'| xargs -i redis-cli    -c  -h    172.31.22.218  -p 7001  -a pass  del {}
 
 
 
redis-cli    -c  -h    172.31.16.135  -p 7002  -a pass keys 'hello_user_*'| xargs -i  redis-cli    -c  -h    172.31.16.135  -p 7002 -a pass  del {}
 
redis-cli    -c  -h    172.31.16.135  -p 7003  -a pass keys 'hello_user_*'| xargs  -i redis-cli    -c  -h    172.31.16.135  -p 7003 -a pass  del {}
 
 
 
redis-cli    -c  -h    172.31.23.43  -p 7004  -a pass keys 'hello_user_*'| xargs -i  redis-cli    -c  -h    172.31.23.43  -p 7004 -a pass  del {}
 
redis-cli    -c  -h    172.31.23.43  -p 7005  -a pass keys 'hello_user_*'| xargs -i  redis-cli    -c  -h    172.31.23.43  -p 7005 -a pass  del {}
 
 
 
 
 
 
 
#!/bin/bash
 
redis_comm=/usr/local/redis-5.0.3/bin/redis-cli
 
redis_ser01=192.168.50.175
 
redis_ser02=192.168.50.174
 
$redis_comm -c -h $redis_ser01  -p 7001 -a xxx  keys $1 | xargs -i $redis_comm -c -h $redis_ser01  -p 7001 -a xxx del {}
 
$redis_comm -c -h $redis_ser02  -p 7001 -a xxx  keys $1 | xargs -i $redis_comm -c -h $redis_ser02  -p 7001 -a xxx del {}
 
 
 
运行:
 
 
 
./redis_del_key.sh  匹配的key*
 
 
 
err 
 
 
 
-i  {} 都是一定要的
 
 
 
redis-cli -n 0 keys "test*" | xargs redis-cli -n 0 del
 
(error) CROSSSLOT Keys in request don't hash to the same slot
 
  
 +
extra_hosts:
 +
- "somehost:162.242.195.82"
 +
- "otherhost:50.31.209.229
 
</pre>
 
</pre>
  
=see also=
+
=3=
 
+
通过参数 --add-host来添加域名和IP信息到容器的/etc/hosts文
 
+
  docker run --add-host=myhostname:10.180.8.1 --name test -it debian
[https://blog.csdn.net/yangyangye/article/details/100523387  redis集群批量删除模糊key shell脚本]
 
 
 
[https://www.cnblogs.com/feng0520/p/11067025.html  redis cluster集群批量删除中的key]
 
 
 
[https://my.oschina.net/u/1255588/blog/1563672 Redis集群批量删除key]
 
 
 
[https://www.cnblogs.com/0201zcr/p/9647787.html  redis批量删除key 远程批量删除key ]
 
 
 
[https://blog.csdn.net/zj20142213/article/details/80879744  redis集群批量删除指定的key]
 
  
https://blog.csdn.net/qq_36090419/article/details/80537684
 
  
[https://www.cnblogs.com/DreamDrive/p/5772198.html  Redis中的批量删除数据库中的Key ]
+
还有个 参考的[[容器绑hosts]]
 +
[[category:container]]

2020年9月24日 (四) 09:59的版本

1直接修改

直接进入容器中修改/etc/hosts

缺点:重启容器后,增加的内容会丢失


NS1=apisns..com
NS2=webappsns..com


docker exec -i docker-compose-nuxt_nuxt-pc_1 sh -c "echo '114.55.202.3 ${NS1}'>>/etc/hosts"
docker exec -i docker-compose-nuxt_nuxt-pc_1 sh -c "echo '114.55.202.3 ${NS2}'>>/etc/hosts"

docker exec -i docker-compose-nuxt_nuxt-pc_1 sh -c "cat /etc/hosts"  


如何还原hosts

cd /data/docker-compose-nuxt/
docker-compose down && docker-compose up -d

2

在docker-compose.yml文件中,通过配置参数extra_hosts实现。例如:

extra_hosts:
 - "somehost:162.242.195.82"
 - "otherhost:50.31.209.229

3

通过参数 --add-host来添加域名和IP信息到容器的/etc/hosts文

 docker run --add-host=myhostname:10.180.8.1 --name test -it debian


还有个 参考的容器绑hosts