Redis学习笔记
一、安装
-
下载
-
wget http://download.redis.io/releases/redis-4.0.9.tar.gz
说明: wget命令用来从指定的URL下载文件参考https://www.cnblogs.com/imist/p/11417643.html
-
-
解压
- tar xzf redis-4.0.9.tar.gz
-
移动文件到usr/local⽬录下
- sudo mv ./redis-4.0.9 /usr/local/redis/ – redis-4.0.9 到/usr/local 并创建文件夹redis
-
进⼊redis⽬录,并生成
- cd /usr/local/redis/
- sudo make - 将C语言编写的redis进行编译
-
测试
- sudo make test
-
安装,将redis的命令安装到/usr/local/bin/⽬录
- sudo make install
-
安装完成后,我们进入目录/usr/local/bin中查看
-
cd /usr/local/bin – 该文件下的命令都是可以直接运行的命令
-
ls -al
redis-server redis服务器 redis-cli redis命令行客户端 redis-benchmark redis性能测试工具 redis-check-aof AOF文件修复工具 redis-check-rdb RDB文件检索工具
-
-
移动配置文件到/etc/⽬录下(配置⽂件⽬录为/usr/local/redis/redis.conf)
-
sudo cp /usr/local/redis/redis.conf /etc/redis/
说明:etc为系统配置文件夹,将redis配置文件放到etc下,则需要管理员权限才能修改etc文件下的配置参数
-
-
启动服务器
- sudo redis-server 选择一个配置文件启动服务器
- redis-cli -h 服务器ip -p 服务器端口
- 重新启动redis服务
- sudo service redis-server restart
二、配置
-
查看
- sudo vi /etc/redis/redis.conf
-
配置参数说明
-
绑定ip:如果需要远程访问,可将此⾏注释,或绑定⼀个真实ip
默认:bind 127.0.0.1
-
端⼝,默认为6379
默认:port 6379
-
是否以守护进程运⾏
- 如果以守护进程运⾏,则不会在命令⾏阻塞,类似于服务
- 如果以⾮守护进程运⾏,则当前终端被阻塞
- 设置为yes表示守护进程,设置为no表示⾮守护进程
- 推荐设置为yes (daemonize yes)
-
数据⽂件
dbfilename dump.rdb
-
数据⽂件存储路径
dir /var/lib/redis
-
⽇志⽂件
logfile “/var/log/redis/redis-server.log”
-
数据库,默认有16个
database 16
-
主从复制,类似于双机备份。
slaveof
-
二、Redis数据结构
-
redis是key-value的数据结构,每条数据都是⼀个键值对
-
键的类型是字符串
注意:键不能重复
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KwhjNC7Z-1571802118387)(images\Redis结构.png)]
-
值的类型分为五种:
-
字符串string
-
哈希hash
-
列表list
-
集合set
-
有序集合zset
-
-
中⽂官⽹查看命令⽂档http://redis.cn/commands.html
三、string类型
-
说明
- 字符串类型是 Redis 中最为基础的数据存储类型,它在 Redis 中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等。在Redis中字符串类型的Value最多可以容纳的数据长度是512M。
-
基本操作
-
增加、修改 – set
说明: 如果设置的键不存在则为添加,如果设置的键已经存在则修改
1. 设置键值 set key value eg: 设置键为name值为itcast的数据 => set name itcast 2. 设置键值及过期时间,以秒为单位 setex key seconds value / set key [EX seconds] eg: 设置键为aa,值为aa过期时间为3秒的数据 => setex aa 3 aa / set aa aa ex 3 3. 设置多个键值 mset key1 value1 key2 value2 ... eg: mset a1 python a2 java a3 c 4. 追加值 append key value eg: 向键为a1中追加值' haha' => append 'a1' 'haha'
-
查询
1. 获取:根据键获取值,如果不存在此键则返回nil get key eg: 获取键'name'的值 => get 'name' 2. 根据多个键获取多个值 mget key1 key2 ... eg: 获取键a1、a2、a3'的值 => mget a1 a2 a3
-
删除与键命令
1. 查找键,参数⽀持正则表达式 keys pattern eg: 查看所有键 => keys * 查看名称中包含a的键 => keys 'a*' 2. 判断键是否存在,如果存在返回1,不存在返回0 exists key1 3. 查看键对应的value的类型 type key 4. 删除键及对应的值 del key1 key2 ... 5. 设置过期时间,以秒为单位(如果没有指定过期时间则⼀直存在,直到使⽤DEL移除) expire key seconds 6. 查看有效时间,以秒为单位 ttl key
-
四、hash类型
-
说明
- hash⽤于存储对象,对象的结构为属性、值;值的类型为string
-
基本操作
-
增加、修改 – hset
1. 设置单个属性 hset key field value eg: 设置键 user的属性name为zs => hset user name zs 2. 设置多个属性 hmset key field1 value1 field2 value2 ...
-
-
查询
1. 获取指定键所有的属性 hkeys key eg: 获取键u2的所有属性 => hkeys u2 2. 获取⼀个属性的值 hget key field 3. 获取多个属性的值 hmget key field1 field2 ... 4. 获取所有属性的值 hvals key 5. 获取所有的属性和值 hgetall key (key1 value1 key2 value2 ...)
-
删除
1. 删除整个hash键及值,使⽤del命令 同字符串操作 2.删除属性,属性对应的值会被⼀起删除 hdel key field1 field2 ...
五、list类型
-
说明
- 列表的元素类型为string,按照插⼊顺序排序
-
基本操作
-
增加
1. 在左侧插⼊数据 lpush key value1 value2 ... valuen * 结果为 valuen ... value2 value1 (这里同时完成了创建) 2. 在右侧插⼊数据 rpush key value1 value2 ... valuen * 结果为 value1 value2 ... valuen 3. 在指定元素的前或后插⼊新元素 linsert key before或after 现有元素 新元素
-
查询
1. 返回列表⾥指定范围内的元素 lrange key start stop - start、stop为元素的下标索引 (这里左右取值索引均为封闭空间) - 索引从左侧开始,第⼀个元素为0 - 索引可以是负数,表示从尾部开始计数,如-1表示最后⼀个元素 eg: 获取键为'a1'的列表所有元素 => lrange a1 0 -1 2. 设置指定索引位置的元素值 lset key index value eg: 修改键为'a'的列表中下标为1的元素值为'z' => lset a 1 z
-
删除
1. 删除指定元素 - 将列表中前count次出现的值为value的元素移除 lrem key count value - count > 0: 从头往尾移除 - count < 0: 从尾往头移除 - count = 0: 移除所有 2. 截取 - 截取列表指定下表的元素 ltrim key start stop
-
六、set类型
-
说明
- ⽆序集合
- 元素为string类型
- 元素具有唯⼀性,不重复
- 对于集合没有修改操作
-
基本操作
-
增加
1. 添加元素 sadd key member1 member2 ... eg: 向键'a3'的集合中添加元素'zhangsan'、'lisi'、'wangwu' => sadd a3 zhangsan sili wangwu
-
查询
1. 返回所有的元素 smembers key eg: 获取键'a3'的集合中所有元素 => smembers a3
-
删除
1. 删除指定元素 srem key member1 eg: 删除键'a3'的集合中元素'wangwu' => srem a3 wangwu
-
七、zset类型
-
说明
-
sorted set,有序集合
-
元素为string类型
-
元素具有唯⼀性,不重复
-
每个元素都会关联⼀个double类型的score,表示权重,通过权重将元素从⼩到⼤排序
-
没有修改操作
-
-
基本操作
-
增加
1. 添加元素 zadd key score1 member1 score2 member2 ... eg: 向键'a4'的集合中添加元素'lisi'、'wangwu'、'zhaoliu'、'zhangsan',权重分别为4、5、6、3 zadd a4 4 lisi 5 wangwu 6 zhaoliu 3 zhangsan
-
查询
1. 返回指定范围内的元素 zrange key start stop - start、stop为元素的下标索引 (这里左右取值索引均为封闭空间) - 索引从左侧开始,第⼀个元素为0 - 索引可以是负数,表示从尾部开始计数,如-1表示最后⼀个元素 eg: 获取键'a4'的集合中所有元素 => zrange a4 0 -1 2. 返回score值在min和max之间的成员 zrangebyscore key min max eg: 获取键'a4'的集合中权限值在5和6之间的成员 => zrangebyscore a4 5 6 3. 返回成员member的score值 zscore key member eg: 获取键'a4'的集合中元素'zhangsan'的权重 => zscore a4 zhangsan
-
删除
1. 删除指定元素 zrem key member1 member2 ... eg: 删除集合'a4'中元素'zhangsan' => zrem a4 zhangsan 2. 删除权重在指定范围的元素 zremrangebyscore key min max eg: 删除集合'a4'中权限在5、6之间的元素 => zremrangebyscore a4 5 6
-
八、记忆
-
get => 获取值 (即value)
-
m => 多个值