4.1.1 Redis相关命令详解及其原理
Redis
Redis 是 Remote Dictionary Service 的简称;也是远程字典服务;
Redis 是内存数据库, KV 数据库,数据结构数据库;
Redis 应用非常广泛,如 Twitter、暴雪娱乐、 Github、Stack Overflow、腾讯、阿里巴巴、京东、华为、新浪微博等,很多 中小型公司也在使用;
Redis 命令查看:http://redis.cn/commands.html
应用
. 记录朋友圈点赞数、评论数和点击数(hash)
. 记录朋友圈说说列表(排序),便于快速显示朋友圈(list)
. 记录文章的标题、摘要、作者和封面,用于列表页展示(hash)
. 记录朋友圈的点赞用户ID列表(list),评论ID列表(list),用 于显示和去重计数(zset)
. 缓存热点数据,减少数据库压力(hash)
. 如果朋友圈说说 ID 是整数 id,可使用 redis 来分配朋友圈说说 id(计数器)(string)
. 通过集合(set)的交并差集运算来实现记录好友关系(set) . 游戏业务中,每局战绩存储(list)
安装编译
1 2 3 4 5 6 7 8 |
git clone https://gitee.com/mirrors/redis.git -b 6.2 cd redis make make test make install # 默认安装在 /usr/local/bin # redis-server 是服务端程序 # redis-cli 是客户端程序 |
启动
1 2 3 4 5 6 7 8 9 |
mkdir redis-data # 把redis文件夹下 redis.conf 拷贝到 redis-data # 修改 redis.conf # requirepass 修改密码 123456 # daemonize yes cd redis-data redis-server redis.conf # 通过 redis-cli 访问 redis-server redis-cli -h 127.0.0.1 -a 123456 |
认识 Redis


string 是一个安全的二进制字符串;
双端队列 (链表) list:有序(插入有序);
散列表 hash:对顺序不关注,field 是唯一的;
无序集合 set:对顺序不关注,里面的值都是唯一的;
有序集合 zset:对顺序是关注的,里面的值是唯一的;根据member 来确定唯一;根据 score 来确定有序;如果score相同会根据memeber来确定唯一
redis 存储结构(KV)

redis 中 value 编码

redis 内存数据库;
1. 到底是要运行速度快,还是要存储效率高;
2. 数据量少的时候,存储效率高为主;
3. 数据量多的时候,运行速度快;
string
字符数组,该字符串是动态字符串 raw,字符串长度小于1M 时,加倍扩容;超过 1M 每次只多扩 1M;字符串最大长度为 512M;
注意:redis 字符串是二进制安全字符串;可以存储图片,二进制协议等二进制数据;
基础命令
# 设置 key 的 value 值
SET key val
# 获取 key 的 value
GET key
# 执行原子加一的操作
INCR key
# 执行原子加一个整数的操作
INCRBY key increment
# 执行原子减一的操作