不奢望岁月静好 只希望点滴积累

0%

  • 一些说明
  • 书籍资源

一些说明

1
2
3
4
最近读了一本书、感觉有些部分还不错、希望分享出来、
是读书笔记、可能提炼度不够、希望以后的自己做的越来越好~~.~~
书籍:Redis-4.x CookBook
除特别说明外、本系列文档都是针对 redis 4.x 的版本

书籍资源

1
2
3
4
5
原项目代码git托管地址:
https://github.com/PacktPublishing/Redis-4.x-Cookbook

书中相关图文:
https://www.packtpub.com/sites/default/files/downloads/Redis4xCookbook_ColorImages.pdf

redis基础命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
1. 返回给定pattern的所有key
keys *
keys list*

2. 确认key是否存在
exists key

3. 删除key
del key

4. 设置key过期
expire key expire

5. 将当期数据库的某个key转移到另外一个db
move key dbindex

6. 移除给定key的过期时间
persist key

7. randomkey 随机返回一个key

8. rename key newname 重新命名一个key

9. type key 查看key的数据类型

10. dump key 返回序列化后的key

11. restore key 反序列化为redis键

12. expireat 和expire类型、接受的参数为 unix时间戳

13. migrate host port key destination-db timout [copy] [repalce]
key原子性的从当前实例转移到目标实例的指定db上、一旦传送成功、key会出现在目标实例、当前实例的key会被删除
eg. redis-cli -h host migrate des_host 6379 operateKey 0 1000

14. Object 从内部观察redis对象
Object encoding key
(str: raw & int(为了节省内存) list: ziplist & linkedlist set: intset & hashtable
hash: zipmap & hashtable zset: ziplist & skiplist)
Object refcount key
object idletime key

15. renamenx key 当且仅当newkey不存在时、改名为newkey

16. sort 对列表、集合、有序集合中的key进行排序
alpha对字符串进行排序 sort list alpha
limit offset count 跳过offset个元素、返回count个元素
sort list limit offset count

17. scan、sscan、hscan、zscan 迭代元素
scan cursor 迭代获取元素

平时觉得没什么用的命令、关键时候救命、😁~

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77

1. 查看db大小
redis-cli -h host -p port -a password dbsize



2. cat a.txt | redis-cli 从文件读入redis



3. redis-cli -a password --csv lrange mylist offset count
从redis中快速读取一些key



4. n command 重复执行n次command



5. help @
@generic @list @hash @set @sorted_set @string @hyperloglog、@server、@connection、@scripting、@pubsub、@transactions

help <command>



6. redis-cli --stat 实时监控redis运行状况
redis-cli monitor



7. redis-cli --bigkeys 查看redis中比较大的key



8. redis-cli --scan --pattern '*my*' 用scan来查找key、并过滤
redis-cli --scan --pattern '*my*' |wc -l 直接使用管道作为下个命令的输入




9. redis-cli -h host --rdb /tmp/dump.rdb
备份远程redis数据到本地文件



10. maxmemory size 设置redis使用的最大内存
超过最大内存时、key过期策略

# volatile-lru -> remove the key with an expire set using an LRU algorithm
# allkeys-lru -> remove any key accordingly to the LRU algorithm
# volatile-random -> remove a random key with an expire set
# allkeys-random -> remove a random key, any key
# volatile-ttl -> remove the key with the nearest expire time (minor TTL)
# noeviction -> don't expire at all, just return an error on write operations



11. 使用客户端查看redis配置
redis-cli -h host config get key
redis-cli -h host config get slowlog-log-slower-than 单位 微秒
redis-cli -h host config get slowlog-log-slower-than 慢操作日志队列大小
redis-cli -h host slowlog get 10 查看最近10条慢日志
hash-max-ziplist-entries 配置使用hashmap编码的最大字节数
redis-cli -h host get client-output-buffer-limit 客户端buffer控制、在serverclient的交互中、

每个连接都会有一个buffer关联、此buffer用来队列化等待被client接受的响应信息、若client不及时响应、
buffer中积压的数据达到阈值、将会导致连接失败、buffer被移除


12. redis以指定配置文件启动
redis-server redis.conf &


13. redis-cli --lru-test 10000000 模拟1000w keys的执行情况
在maxmemory无限制的情况下、测试时无意义的、因为内存无限制、命中率会是100%、计算机的ram会被耗尽
记得配置key的过期策略

####问题描述
官网下载、安装
image.png

1
2
3
An error has occurred. 
See the log file
/Users/%username%/.eclipse/1899417313_macosx_cocoa_x86_64/configuration/1507391541586.log.

image.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
!ENTRY org.eclipse.osgi 4 0 2019-07-26 21:12:08.965
!MESSAGE Application error
!STACK 1
java.lang.IllegalStateException: The platform metadata area could not be written: /private/var/folders/kc/cc7tcgrx6_1d355s45t1q3nh0000gn/T/AppTranslocation/9361422A-8DF8-482D-873B-8C030C46FB6E/d/mat.app/Contents/MacOS/workspace/.metadata. By default the platform writes its content
under the current working directory when the platform is launched. Use the -data parameter to
specify a different content area for the platform.
at org.eclipse.core.internal.runtime.DataArea.assertLocationInitialized(DataArea.java:70)
at org.eclipse.core.internal.runtime.DataArea.getStateLocation(DataArea.java:138)
at org.eclipse.core.internal.preferences.InstancePreferences.getBaseLocation(InstancePreferences.java:44)
at org.eclipse.core.internal.preferences.InstancePreferences.initializeChildren(InstancePreferences.java:209)
at org.eclipse.core.internal.preferences.InstancePreferences.<init>(InstancePreferences.java:59)
at org.eclipse.core.internal.preferences.InstancePreferences.internalCreate(InstancePreferences.java:220)
at org.eclipse.core.internal.preferences.EclipsePreferences.create(EclipsePreferences.java:349)
@

解决方案

1
2
3
4
5
使用命令行打开MemoryAnalyzer.ini,添加-data参数 
/Users/nj/package/mat.app/Contents/Eclipse/MemoryAnalyzer.ini
如:
-data
/usr/local/var/log/mat/

注意

1
2
-data 放在 launcher前、
-data 和 value要放在两行

image.png

  1. 分支merge错了、需要撤回merge
    git merge –abort

  2. 查看某段时间段内某个用户的提交
    git log -p –author={name} –since={start-time} –until={end-time}
    eg. git log -p –author=nj –since=2019-09-24 –until=2019-09-24

  3. 查看某次提交属于哪个分支
    git br -r –contains commitId
    eg. git br -r –contains ca4efc1a

  4. tag删除
    git tag -d tag_name 删除本地tag
    git push origin :refs/tags/tag_name 删除远程tag

  • 隐藏新标签页最近访问
  • mac下禁用 chrome 自动更新

隐藏新标签页最近访问

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
1. 尝试过 new tab direct.. & 其它插件
感觉不够爽、网络慢时、tab页有延时、可以看到明显的new tab跳转过程...
啊哈、心里还是不爽的~~~~

2. 继续 google. 找到手动解决方式、~~
1) 下载pak打包解压小工具 链接:https://pan.baidu.com/s/1TDp614rex0h0U5t2ShZE6g 密码:gtno
2) 将pak文件小工具解压、备用
eg. 将pak文件解压
pak_tools -c=unpack -f=/Users/aha/Package/resources.pak

重新打包为pak文件
pak_tools -c=repack -f=/Users/aha/Package/resources.json

3) 找到google安装目录
Mac:
/Applications/Google Chrome.app/Contents/Versions/
-------------------------------------------------------------------------
(如果安装过多个版本的话、可以看到多个版本命名的文件夹、so... 接下来查看自己正在使用的版本
Chrome -> 右上角... -> 帮助 -> 关于google chrome -> 可以看到正在使用的版本)
-------------------------------------------------------------------------
进入对应版本目录下:
eg. 我的是:
/Applications/Google Chrome.app/Contents/Versions/{{69.0.3497.92}}/Google Chrome Framework.framework/Versions/A/Resources
然后可以看到有个文件叫:resource.pak

3) 找到它之后、复制一份到自己方便找到的地方、把这里的重命名为 resource.pak-bak
eg. 我把它放到package下、
然后、使用上边的命令解压、
pak_tools -c=unpack -f=/Users/aha/Package/resources.pak
解压后会生成 rasource.json 和 resource 文件夹
用sublime或者其它的文本编辑器在 resources文件夹中搜索
<div id="most-visited">可以看到两处
enen、干脆点儿、都注释掉吧~~

然后、重新生成pak文件
pak_tools -c=repack -f=/Users/aha/Package/resources.json

将重新生成的 resources.pak 放回 :
/Applications/Google Chrome.app/Contents/Versions/{{69.0.3497.92}}/Google Chrome Framework.framework/Versions/A/Resources

4) 退出google chrome、然后重新启动、可以看到 那八个缩略图从我们的世界中消失了、
enen / 干净的感觉真爽~~

mac下禁用 chrome 自动更新

1
2
3
4
5
1. 来个干脆的吧
找到update程序、直接删除或者重命名
我的是在 ~/Library/Chrome/下
文件夹的名字叫: GoogleSoftwareUpdate
eg. 我的完整路径是 ~/Library/Chrome/GoogleSoftwareUpdate 直接将它重命名、就不会自动更新了

command + 左右键 跳转到行首、行位
option + 左右键 跳转到单词的首、尾
command + enter 在下边插入一行、光标不变

debug相关:
Show Execution Point(Alt + F10) 将光标从其它页面或者代码行、跳转到当前正在执行的行
Step Over(F8): 步过, 一步步往下走
Step into(F7): 步入,可以进入方法内部
Force Step into(Alt + Shift + F7): 强制步入, 可以进入官方类库
Step out(Shift + F8): 步出、跳回到方法调用处
Run to Cursor(Alt + F9): 运行到光标处
Evaluate Expression(Alt + F8): 计算表达式