本文简要介绍 Redis 和完成一个示例。
Redis(Remote Dictionary Server ),即远程字典服务。它是一个key-value存储系统。它是内存数据存储,因此很快,常常作为缓存使用。
特点:
Redis 是一个键值对存储:
指令格式:
set key value
比如: set kk1 vv1 就代表了 将值 vv1 存放在 kk1 为key 的位置。可以直接 get 取出。
get kk1
持久化
客户端连接工具:
事务(Transactions)
Redis 所有的命令都是原子性的,包括那些一次可以执行多项操作的命令也一样。此外,在使用多命令的时候,Redis 支持事务。
Redis 确实是单线程的,这就是为什么每个命令都是原子性的原因。
一次只能执行一个命令
事务的使用
使用 multi 命令, 作为开始。 使用 exec 执行命令。或者 discard 来放弃取消执行。
multi
hincrby groups:1percent balance -9000000000
hincrby groups:99percent balance 9000000000
exec
key 的过期时间
127.0.0.1:6379> set page 30
OK
127.0.0.1:6379> expire page 10
1
127.0.0.1:6379> ttl page
23
setex 名字,写入一个值的同时指定过期时间,示例:
127.0.0.1:6379> setex ppp 10 'hello'
OK
127.0.0.1:6379> ttl ppp
4
请参考:https://cloud.tencent.com/developer/article/1608185
本文略。
编译后的 redis-cli 在你的 redis-6.2.4/src 文件夹下,使用它连接Redis服务。
./redis-cli -h 127.0.0.1 -a 123456 --raw
-h 后是服务器地址
-a 是密码
--raw 用来显示中文
在 Redis 中,通过一个数字来标识数据库,默认开始标识是 0。
127.0.0.1:6379> select 1
OK
示例:
127.0.0.1:6379[1]> set k1 v1
OK
127.0.0.1:6379[1]> get k1
"v1"
写一个 json 格式的:
127.0.0.1:6379[1]> set users:zhang3 '{"name":"zhang3" "age":16 }'
OK
像上面的 users:zhang3 ,用冒号分割是一种约定习惯,前面表达一个分类,这里表达了“一个叫zhang3的用户”。这是可选的行为。
五种数据结构:
指令字有:
示例:
127.0.0.1:6379> set txt1 '白日依山尽,黄河入海流。欲穷千里目,更上一层楼'
OK
127.0.0.1:6379> get txt1
白日依山尽,黄河入海流。欲穷千里目,更上一层楼
127.0.0.1:6379> strlen txt1
69
127.0.0.1:6379> getrange txt1 18 24
黄河?
append txt1 ' --- 唐诗一首'
127.0.0.1:6379> get txt1
白日依山尽,黄河入海流。欲穷千里目,更上一层楼 --- 唐诗一首
value 可以是数字
如果value 是数字的话,可以做做累加。
指令字:
127.0.0.1:6379> set age 1
OK
127.0.0.1:6379> get age
1
127.0.0.1:6379> incr age
2
127.0.0.1:6379> incrby age 10
12
对至值的内容 可以是一个 Hash 表,类似 Java 里的 HashMap
格式:
hset key field value [fileld value]
指令字:
field 和 value 可以多个键值对。
示例:
127.0.0.1:6379> hset zhang3 name zhang3 age 16
2
# 获取全部
127.0.0.1:6379> hgetall zhang3
name
zhang3
age
16
127.0.0.1:6379> hget zhang3 name
zhang3
127.0.0.1:6379> hkeys zhang3
name
age
# 删除字段
127.0.0.1:6379> hdel zhang3 age
1
它的 value 以数组形式的 存储。不过它更类似一个双向链表。
指令字有:
示例:
127.0.0.1:6379> lpush duiwu1 zhang3 li4
2
127.0.0.1:6379> lpush duiwu1 wang5
3
127.0.0.1:6379> llen duiwu1
3
127.0.0.1:6379> lrange duiwu1 0 3
wang5
li4
zhang3
集合结构被用于存储唯一值。
集合是无序的。
它提供了一组基于集合的操作,比如说并集运算。
集合非常适用于:
指令字:
示例:
127.0.0.1:6379> sadd zhang3_friedns li4 wang5
2
127.0.0.1:6379> sadd wang5_friends li4 zhao6
2
127.0.0.1:6379> sismember zhang3_friedns li4
1
127.0.0.1:6379> sinter zhang3_friedns wang5_friends
li4
有序集合结构就像集合结构一样,但是有权重(score)。
权重提供了排序和排名功能
指令字:
127.0.0.1:6379> zadd paiming 80 zhangsan 70 lisi 30 anni
3
127.0.0.1:6379> zcount paiming 0 60
1
127.0.0.1:6379> zrevrank paiming anni
2
127.0.0.1:6379> zrank paiming anni
0
keys : 按模式搜索有哪些key
127.0.0.1:6379> keys *
paiming
age
zhang3
duiwu1
本文太长了,参考我的另一篇文章:https://cloud.tencent.com/developer/article/1849675