虽然现阶段我想开发的游戏是单机游戏,但是因为种种原因我不得不去学习服务端技术。说不定未来开发游戏时用得上呢,总之记录下。
Redis
Redis是一个基于内存的键值数据库,目前我见过的使用Radis的项目都是在数据库之上放一层Redis做高速缓存。
找一个练习Redis的靶场
由于我手头没有像样的Linux系统,也不太想去折腾这台跟了我多年的笔记本去装什么Docker for Window。于是乎我索性就用Redis官网提供的interactive tutorial来作为学习Redis语句的环境了,反正一开始只要熟悉数据结构就好了,复杂的操作后面开发中用到再整理成新文章吧。
基本操作
在靶场的命令行中键入HELP
,得到如下的输出:
1 >Please type HELP for one of these commands: DECR, DECRBY, DEL, EXISTS, EXPIRE, GET, GETSET, HDEL, HEXISTS, HGET, HGETALL, HINCRBY, HKEYS, HLEN, HMGET, HMSET, HSET, HVALS, INCR, INCRBY, KEYS, LINDEX, LLEN, LPOP, LPUSH, LRANGE, LREM, LSET, LTRIM, MGET, MSET, MSETNX, MULTI, PEXPIRE, RENAME, RENAMENX, RPOP, RPOPLPUSH, RPUSH, SADD, SCARD, SDIFF, SDIFFSTORE, SET, SETEX, SETNX, SINTER, SINTERSTORE, SISMEMBER, SMEMBERS, SMOVE, SORT, SPOP, SRANDMEMBER, SREM, SUNION, SUNIONSTORE, TTL, TYPE, ZADD, ZCARD, ZCOUNT, ZINCRBY, ZRANGE, ZRANGEBYSCORE, ZRANK, ZREM, ZREMRANGEBYSCORE, ZREVRANGE, ZSCORE因为这是挂在官网上的教程,姑且就认为这些命令是官方推荐初学者优先学习掌握的吧。可惜官网的这个列表是按照字典排序的,我根据自己的理解总结了一个初学者的学习顺序。
CRUD
从使用者的角度出发,Redis作为键值数据库,自然是从最常用的CRUD开始学起比较好。毕竟我们CRUD打工人每天面对的就是这几个东西,哭了。
Create & Update
Redis的曾和改是一体的,靠的是下面这条命令。时间复杂度为O(1)。
1 | SET key value [EX seconds|PX milliseconds|EXAT timestamp|PXAT milliseconds-timestamp|KEEPTTL] [NX|XX] [GET] |
单纯的SET key value
操作会在数据库中创建一个key来保存字符串类型value,如果key已经存有一个数据则会直接覆盖之前的value。而且一旦执行覆盖操作,之前设置的过期时间什么的都会没掉。
以下为选项
1 | EX seconds -- 设置有效时间,单位秒。 |
另外一提,官方文档中有如下注意事项:
Note: Since the SET command options can replace SETNX, SETEX, PSETEX, GETSET, it is possible that in future versions of Redis these commands will be deprecated and finally removed.
大意是说以上这些命令SETNX
,SETEX
,PSETEX
,GETSET
现在由SET可以直接搞定了,未来这些命令会被弃用并且最终会被删除。
Read
读命令比较简单,纯种读只有一种样子,不像SET有花花绿绿的选项。时间复杂度为O(1)。
1 | GET key |
返回的就是这个key对应的value,如果key不存在则返回nil。
虽然GET命令比较简单,但是他有几个变种。
1 | GETDEL key -- 获取value之后删掉(当且仅当value是string类型的) |
Del
删除指令也比较简单。时间复杂度为O(1)
1 | DEL key [key ...] |
输入多个key,不存在的key会被无视,返回有多少个key被删。
先写到这儿吧,等我用到list, set, zset, hash再更新接下来的