文章目录
redis简单介绍
使用c语言编写的,支持网络交互的,内存中的key-value对存储的
- 非关系型数据库
- 不适合持久存储海量数据
- 不适合复杂查询数据
- 用途:前台页面数据的缓存
redis安装配置
-
检查gcc 版本,要在5.3以上 gcc -v
-
下载:https://redis.io/download
wget https://download.redis.io/releases/redis-6.2.4.tar.gz
-
解压: tar -zxvf redis-6.0.8.tar.gz
-
预编译: make
创建文件: mikdir -p /usr/local/redis
安装到指定目录: make install PREFIX=/usr/local/redis
进入安装文件 bin 目录:cd /usr/local/redis/bin
./redis-server 启动服务
-
复制redis.config到redis安装目录 cp redis.conf /usr/local/redis/bin/
-
修改 redis.conf 文件 vim redis.conf
1)后台运行: daemonize no 改为 daemonize yes.
2)设置密码:requirepass 你的密码.
文件内查找: /你搜索的内容
回车
n 下一个
N 上一个.
3)注释 绑定的 id,默认只能本机访问,这样就可可以远程访问了. #bind 127.0.0.1
-
启动命令: ./redis-server redis.conf
-
查看 Redis 运行状态: ps -ef | grep redis
-
进入客户端模式: ./redis-cli输入密码
-
auth 密码
-
测试 ping
-
ctrl+c 退出客户端模式
redis五种数据类型演示
先进入redis客户端
- 进入客户端命令 ./redis-cli
- 输入认证密码 auth 你的redis密码
- 测试 ping
- 退出客户端模式 ctrl+c
[你的登录用户名字@iZbp190ak0w1vyyfac0t34Z bin]# ./redis-cli
127.0.0.1:6379> auth 111
OK
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set name jim
OK
1) String 字符串
-
set 存储 键-值
-
get 获取键的值
-
del 删除键
127.0.0.1:6379> set name jim OK 127.0.0.1:6379> get name "jim" 127.0.0.1:6379> set age 22 OK 127.0.0.1:6379> get age "22" 127.0.0.1:6379> del age (integer) 1 127.0.0.1:6379> get age (nil)
Redis 客户端可视化工具查看:
2)Hash 哈希
-
键值对集合
-
适合存储对象
-
存的是字符串和字符串值之间的映射
比如:user对象 的存储
-
hash存储user对象结构:
a user就相当于一个键,他的值又可以时多个键值对。
127.0.0.1:6379> hmset user name jim age 22 gender man
OK
127.0.0.1:6379> hmget user name
1) "jim"
127.0.0.1:6379> hmget user age
1) "22"
127.0.0.1:6379> hmget user gender
1) "man"
客户端可视化工具查看:
3)List 列表
-
是字符串列表
-
按插入顺序排序
-
从头部(左边)添加 /从尾部(右边)添加
- lpush list 从左边插入
- rpush list 从右边插入
- lrange list 0 5 查看插入的列表
-
可以存储重复元素
-
list 存储结构
-
127.0.0.1:6379> lpush list a
(integer) 1
127.0.0.1:6379> lpush list b
(integer) 2
127.0.0.1:6379> lrange list 0 5
1) "b"
2) "a"
127.0.0.1:6379> rpush list c
(integer) 3
127.0.0.1:6379> lrange list 0 5
1) "b"
2) "a"
3) "c"
127.0.0.1:6379> rpush list c
(integer) 4
127.0.0.1:6379> lrange list 0 5
1) "b"
2) "a"
3) "c"
4) "c"
可视化客户端工具查看:
4)Set 无需集合
-
无序集合
-
通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)
-
sadd key member 添加元素到集合
-
不允许存储重复元素
127.0.0.1:6379> sadd set b
(integer) 1
127.0.0.1:6379> sadd set c
(integer) 1
127.0.0.1:6379> sadd set a
(integer) 1
127.0.0.1:6379> smembers set
1) "a"
2) "c"
3) "b"
127.0.0.1:6379> sadd set a
(integer) 0
127.0.0.1:6379> smembers set
1) "a"
2) "c"
3) "b"
5)zset 有序集合
- 每个元素关联一个double类型的分数(score),redis通过分数,从小到大排序
- zset成员唯一,但是分数可以重复
- zadd key score member 添加元素到集合
- ZRANGEBYSCORE name 0 1000 查看zset有序集合
127.0.0.1:6379> zadd zset 2 b
(integer) 1
127.0.0.1:6379> zadd zset 1 a
(integer) 1
127.0.0.1:6379> zadd zset 3 c
(integer) 1
127.0.0.1:6379> zadd zset 4 c
(integer) 0
127.0.0.1:6379> ZRANGEBYSCORE zset 0 10
1) "a"
2) "b"
3) "c"
设置值时直接设置有效时间
-
EX 表示以秒为单位
-
PX 表示以毫秒为单位
EX,PX 不区分大小写
-
set name jim EX 30 设置失效时间为 30 秒
-
查看剩余时间
ttl 键 查看剩余时间(秒)
pttl 键 查看剩余时间(毫秒)
设置值后设置有效时间
- expire 键 时间(秒)
- pexpire 键 时间(毫秒)
127.0.0.1:6379> expire name 5
(integer) 1
127.0.0.1:6379> set name jim ex 10
OK
127.0.0.1:6379> set name jim ex 10
OK
127.0.0.1:6379> ttl name
(integer) 7
127.0.0.1:6379> ttl name
(integer) 5
127.0.0.1:6379> ttl name
(integer) 2
127.0.0.1:6379> ttl name
(integer) -2