spring redis学习笔记

1.下载: https://github.com/MicrosoftArchive/redis/releases,并解压文件;

2.双击redis-server.exe,运行redis服务器;

3.双击redis-cli.exe,运行redis客服端;

    远程连接redis服务器:./redis-cli -h 127.0.0.1 -p 6379 -a password

4.参数说明:config get *

daemonize no(默认)/yes

是否启用守护线程

port 6379(默认)

设置端口

bind 127.0.0.1

绑定主机IP

timeout 300

客服端闲置超时

loglevel verbose(默认)

debug、verbose、notice、warning

设置日志级别

logfile stdout

设置日志记录方式

databases 0(默认)

设置数据库的数量

save <seconds> <changes>

设置数据同步到文件策略

rdbcompression yes(默认)/no

设置存入本地数据库时是否压缩数据(LZF)

dbfilename dump.rdb

设置本地数据库名称

dir ./

设置本地数据库目录

slaveof <masterip> <masterport>

设置从机连接主机的IP和PORT

masterauth <master-password>

设置从机连接主机的密码

requirepass foobared

设置客服端连接服务器密码

maxclients 128

设置客服端最大连接数,0不设置

maxmemory <bytes>

设置redis最大内存限制

appendonly no(默认)/yes

设置是否在每次更新操作后进行日志记录

appendfilename appendonly.aof

设置更新日志文件名

appendfsync everysec(默认)/no/always

设置更新文件策略

vm-enabled no(默认)/yes

设置是否启用虚拟内存机制

vm-swap-file /tmp/redis.swap(默认值)

设置虚拟内存文件路径

vm-max-memory 0

设置所有大于vm-max-memory的数据存入虚拟内存文件,其中索引一直储存在内存在

vm-page-size 32

设置每个虚拟内存分页大小

vm-pages 134217728

设置swap文件中的page数量

vm-max-threads 4

设置访问swap文件的线程数,0为串行

glueoutputbuf yes(默认)/no

设置在向客户端应答时,是否把较小的包合并为一个包发送

hash-max-zipmap-entries 64

hash-max-zipmap-value 512

设置在超过一定的数量或者最大的元素超过某一临界值时,采用一种特殊的哈希算法

activerehashing yes(默认)/no

设置是否激活重置哈希

include /path/to/local.conf

设置包含其它的配置文件,可以在同一主机上多个Redis实例之间使用同一份配置文件,而同时各个实例又拥有自己的特定配置文件

5.数据类型

类型

简介

特性

场景

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,带权重的消息队列

6.对key的操作:

序号

命令及描述

1

DEL key
该命令用于在 key 存在时删除 key。

2

DUMP key 
序列化给定 key ,并返回被序列化的值。

3

EXISTS key 
检查给定 key 是否存在。

4

EXPIRE key seconds
为给定 key 设置过期时间。

5

EXPIREAT key timestamp 
EXPIREAT 的作用和 EXPIRE 类似,都用于为 key 设置过期时间。 不同在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳(unix timestamp)。

6

PEXPIRE key milliseconds 
设置 key 的过期时间以毫秒计。

7

PEXPIREAT key milliseconds-timestamp 
设置 key 过期时间的时间戳(unix timestamp) 以毫秒计

8

KEYS pattern 
查找所有符合给定模式( pattern)的 key 。

9

MOVE key db 
将当前数据库的 key 移动到给定的数据库 db 当中。

10

PERSIST key 
移除 key 的过期时间,key 将持久保持。

11

PTTL key 
以毫秒为单位返回 key 的剩余的过期时间。

12

TTL key 
以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。

13

RANDOMKEY 
从当前数据库中随机返回一个 key 。

14

RENAME key newkey 
修改 key 的名称

15

RENAMENX key newkey 
仅当 newkey 不存在时,将 key 改名为 newkey 。

16

TYPE key 
返回 key 所储存的值的类型。

7.数据备份与恢复

    save: 该命令将在 redis 安装目录中创建dump.rdb文件。如果需要恢复数据,只需将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可.

    config get dir:获取dump.rdb文件路径.

8.redis安全

    AUTH password: 我们可以通过 redis 的配置文件设置密码参数,这样客户端连接到 redis 服务就需要密码验证,这样可以让你的 redis 服务更安全。

9.性能测试

    redis-benchmark [option] [option value]

序号

选项

描述

默认值

1

-h

指定服务器主机名

127.0.0.1

2

-p

指定服务器端口

6379

3

-s

指定服务器 socket

4

-c

指定并发连接数

50

5

-n

指定请求数

10000

6

-d

以字节的形式指定 SET/GET 值的数据大小

2

7

-k

1=keep alive 0=reconnect

1

8

-r

SET/GET/INCR 使用随机 key, SADD 使用随机值

9

-P

通过管道传输 <numreq> 请求

1

10

-q

强制退出 redis。仅显示 query/sec 值

11

--csv

以 CSV 格式输出

12

-l

生成循环,永久执行测试

13

-t

仅运行以逗号分隔的测试命令列表。

14

-I

Idle 模式。仅打开 N 个 idle 连接并等待。

10.客服端连接

    Redis 通过监听一个 TCP 端口或者 Unix socket 的方式来接收来自客户端的连接,当一个连接建立后,Redis 内部会进行以下一些操作:

    1.首先,客户端 socket 会被设置为非阻塞模式,因为 Redis 在网络事件处理上采用的是非阻塞多路复用模型。

    2.然后为这个 socket 设置 TCP_NODELAY 属性,禁用 Nagle 算法

    3.然后创建一个可读的文件事件用于监听这个客户端 socket 的数据发送

S.N.

命令

描述

1

CLIENT LIST

返回连接到 redis 服务的客户端列表

2

CLIENT SETNAME

设置当前连接的名称

3

CLIENT GETNAME

获取通过 CLIENT SETNAME 命令设置的服务名称

4

CLIENT PAUSE

挂起客户端连接,指定挂起的时间以毫秒计

5

CLIENT KILL

关闭客户端连接

11. Redis 管道技术

    Redis 管道技术可以在服务端未响应时,客户端可以继续向服务端发送请求,并最终一次性读取所有服务端的响应。

原文地址:https://www.cnblogs.com/jinloooong/p/9609426.html