@TOC
1 编译安装
git clone https://gitee.com/mirrors/redis.git -b 6.2
cd redis
make -j4
make test -j4
sudo make install
默认安装在 /usr/local/bin
redis-server 是服务端程序
redis-cli 是客户端程序
2 启动
1 mkdir redis-data 把redis文件夹下 redis.conf 拷贝到 redis-data
2 修改 redis.conf
找到 #requirepass foobared
将注释符号(#)去掉,并将"foobared"替换为你想要的密码,譬如修改为: requirepass 123456
然后
3 cd redis-data
启动服务 redis-server redis.conf
4 客户端通过 redis-cli 访问 redis-server
redis-cli -h 127.0.0.1 -a 123456
3 redis 是_
3.1 远程字典服务
Dictionary Service 的简称;也是远程字典服务(一个独立运行的进程);
通过tcp 与 redis 建立连接交互;
请求回应模型:客户端发出请求后,会得到回应,客户会知道它的请求的结果;
通过字典的方式索引数据。
3.2 内存数据库
数据都在内存当中
3.3 kv数据库
存储方式:key - value 对是存储在一起的
操作方式:通过key去找到 key - value存储的位置
value是数据结构,通过key找到val(数据结构),然后再通过“命令”去操作数据结构。
有哪些“命令”?====> redis命令中心: http://redis.cn/commands.html
具体操作见第6节:数据演示
key 通过siphash进行哈希运算,生成一个64位的哈希值,然后对数组长度取余,算出key在数组中的下标,
value是key对应的数据结构,如下图:
3.4 数据结构数据库
通过k去访问 不同类型的数据结构
有哪些类型的数据结构呢?
常用的如下:
3.4.1 string 是一个安全的二进制字符串;
3.4.2 双端队列 (链表) list :有序(插入有序);
例如从左侧插入:
t1最先插入,所以被挤到了最右边,处在第四个元素的位置
3.4.3 散列表 hash :对顺序不关注,field 是唯一的;
3.4.4 无序集合 set :对顺序不关注,里面的值都是唯一的;
3.4.5 有序集合 zset :对顺序是关注的,里面的值是唯一的;根据member 来确定唯一;根据 score (c1, c2, c3)来确定有序。
t1,t2,t3按80 90 100 排序
3.4.5 总结:
上图中的c1, c2, c3 理解 score, 排序的依据; m1,m2,m3是member,用来确定唯一
4 应用
热点数据的缓存,以减轻磁盘数据的压力(hash)。
。。。
5 redis常用命令
5.1 基本命令
SET key value:设置键值对
GET key:获取指定键的值
DEL key:删除指定键
EXISTS key:判断指定键是否存在
INCR key:将指定键的值加 1,并返回新的值
DECR key:将指定键的值减 1,并返回新的值
KEYS pattern:查找所有符合模式匹配的键名列表
EXPIRE key seconds:设置指定键的过期时间(单位为秒)
TTL key:查询指定键还有多长时间过期(单位为秒)
HSET hash_key field value:在哈希表中设置字段和相应的值
HGET hash_key field:获取哈希表中字段对应的值
HMSET hash_key field value [field value ...]:一次性设置哈希表中多个字段和相应的值
HMGET hash_key field [field ...]:一次性获取哈希表中多个字段对应的值
5.2 与range相关的命令
Redis 中与 range 相关的命令主要有以下几种:
ZRANGE key start stop [WITHSCORES]:返回有序集合中指定索引范围内的成员,支持按分值排序和返回分值
ZREVRANGE key start stop [WITHSCORES]:返回有序集合中指定倒序索引范围内的成员,支持按分值排序和返回分值
LRANGE key start stop:返回列表中指定索引范围内的元素
LTRIM key start stop:对列表进行修剪,只保留指定索引范围内的元素
SRANDMEMBER key [count]:随机获取集合中一个或多个元素,支持重复元素
以上命令都支持指定起始和终止索引来限制返回结果的数量。其中 ZRANGE 和 ZREVRANGE 命令还支持 WITHSCORES 参数以便同时返回成员和其对应的分值。LRANGE 命令可以用于实现简单队列或栈功能
start, stop是标号,从0开始,当stop为 -1, 表示最后一个。
6 redis 中 value 编码
value就是key对应的数据结构,value会有各种各样的特征,因此需要预设一些规范。
常用如下:
文章参考与<零声教育>的C/C++linux服务期高级架构系统教程学习:链接