Redis is a software project that implements data structure servers. It is open-source, networked, in-memory, and stores keys with optional durability.
注意:
- Redis Cluster only supports database zero
- redis 6.0 以后的新功能
ACL访问控制列表:- A container for Access List Control commands 访问控制列表
docker
docker run -v /root/redis/conf:/usr/local/etc/redis -v /root/redis/data:/data -p 6379:6379 --name redis redis:6.2.6
k8s
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis
labels:
app: redis
spec:
replicas: 1
selector:
matchLabels:
app: redis
template:
metadata:
labels:
app: redis
spec:
imagePullSecrets:
- name: fly-reg
containers:
- name: redis
image: fly.reg.com/redis:6.2.6
imagePullPolicy: IfNotPresent
ports:
- containerPort: 6379
volumeMounts:
- name: redis
mountPath: /etc/localtime
readOnly: true
volumes:
- name: redis
hostPath:
path: /etc/localtime
---
apiVersion: v1
kind: Service
metadata:
name: redis
spec:
type: NodePort
selector:
app: redis
ports:
- name: http
port: 6379
targetPort: 6379
nodePort: 30003
commands
# 测试 connect
redis-cli -h localhost -p 6379 ping
# 密码 测试 connect
redis-cli -h localhost -p 6379 -a password ping
# connect
redis-cli -h localhost -p 6379
# 密码 connect
redis-cli -h localhost -p 6379 -a password
# 默认连接 localhost 6379
redis-cli
# 按数据原有格式打印数据,不展示额外的类型信息;
# 显示中文
redis-cli --raw
# 连接后 认证
# localhost:6379> AUTH [username] password
# ACL
# redis 6.0 以后的新功能 A container for Access List Control commands 访问控制列表
# 默认用户 default ,设置不同用户并授予命令或数据权限
# localhost:6379> ACL USERS
# 切换数据库 index[0,15] 供16个库,默认连接0
# localhost:6379> select 1
# 显示当前数据库索引
# Return the number of keys in the currently-selected database
# localhost:6379> dbsize
redisjson
支持 JSON 的 redis rejson
home
github
java client github
docker and podman
docker run -v /root/redis/conf:/usr/local/etc/redis -v /root/redis/data:/data -p 6379:6379 --name rejson redislabs/rejson:2.0.6
podman run -v /root/redis/conf:/usr/local/etc/redis -v /root/redis/data:/data -p 6379:6379 --name rejson redislabs/rejson:2.0.6
rejson k8s
apiVersion: apps/v1
kind: Deployment
metadata:
name: redisjson
labels:
app: redisjson
spec:
replicas: 1
selector:
matchLabels:
app: redisjson
template:
metadata:
labels:
app: redisjson
spec:
imagePullSecrets:
- name: fly-reg
containers:
- name: redisjson
image: fly.reg.com/redisjson:2.0.6
imagePullPolicy: IfNotPresent
ports:
- containerPort: 6379
volumeMounts:
- name: redisjson
mountPath: /etc/localtime
readOnly: true
volumes:
- name: redisjson
hostPath:
path: /etc/localtime
---
apiVersion: v1
kind: Service
metadata:
name: redisjson
spec:
type: NodePort
selector:
app: redisjson
ports:
- name: http
port: 6379
targetPort: 6379
nodePort: 30004
redisjson commands
localhost:6379> JSON.SET doc $ '{"a":2,"b":3,"nested":{"a":4,"b":null}}' OK
localhost:6379> get keys (nil)
localhost:6379> dbsize (integer) 1
localhost:6379> GET * (nil)
localhost:6379> JSON.GET doc "{\"a\":2,\"b\":3,\"nested\":{\"a\":4,\"b\":null}}"
localhost:6379> JSON.GET doc $..b "[3,null]"
localhost:6379> JSON.GET doc ..a $..b "{\"..a\":[2,4],\"$..b\":[3,null]}"
localhost:6379> JSON.GET doc ..a "2"
localhost:6379> JSON.GET doc $..a "[2,4]"
localhost:6379> JSON.GET doc $..a $..b "{\"$..a\":[2,4],\"$..b\":[3,null]}"
jrejson
RedisJson java client
github
maven search
maven
<dependency>
<groupId>com.redislabs</groupId>
<artifactId>jrejson</artifactId>
<version>1.5.0</version>
</dependency>
gradle
implementation 'com.redislabs:jrejson:1.5.0'
example
import redis.clients.jedis.Jedis;
import com.redislabs.modules.rejson.JReJSON;
...
First get a connection
JReJSON client = new JReJSON("localhost", 6379);
Setting a Redis key name _foo_ to the string _"bar"_, and reading it back
client.set("foo", "bar");
String s0 = (String) client.get("foo");
Omitting the path (usually) defaults to the root path, so the call above to
`get()` and the following ones // are basically interchangeable
String s1 = (String) client.get("foo", new Path("."));
String s2 = (String) client.get("foo", Path.ROOT_PATH);
Any Gson-able object can be set and updated
client.set("obj", new Object()); // just an empty object
client.set("obj", null, new Path(".zilch"));
Path p = new Path(".whatevs");
client.set("obj", true, p);
client.set("obj", 42, p);
client.del("obj", p);
...