Redis 简介
Redis 是一个 key-value 存储系统. 和 Memcached 类似, 它支持存储的 value 类型相对更多, 包括 string(字符串),list(链表),set(集合)和 zset(有序集合). 这些数据类型都支持 push/pop,add/remove 及取交集并集和差集及更丰富的操作, 而且这些操作都是原子性的. 在此基础上, Redis 支持各种不同方式的排序. 与 Memcached 一样, 为了保证效率, 数据都是缓存在内存中. 区别的是 Redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件, 并且在此基础上实现了 master-slave(主从)同步.
Redis 是一个高性能的 key-value 数据库. Redis 的出现, 很大程度补偿了 Memcached 这类 keyvalue 存储的不足, 在部 分场合可以对关系数据库起到很好的补充作用. 它提供了 Python,Ruby,Erlang,PHP 客户端, 使用很方便. -- 摘自 360 百科
简而言之 Redis 是属于非关系型数据库, 存储结构是: key-value, 内存 - 磁盘的存储方式.
Redis 的应用场景
1. 数据缓存
2.session 共享(会话保持)
3. 作为计数器
4. 消息队列
5. 最新列表
Redis 的持久化
Redis 持久化会在磁盘上依赖两个文件
数据文件: rdb
日志文件: aof
Redis 实现持久化两种机制
RDB: 周期的将内存中的数据备份都磁盘
AOF: 借助于一个日志文件, 这个文件会记录每次操作
Redis 中的数据类型
字符类型
列表类型
有序集合类型
无序集合类型
哈希表类型
这部分内容大家也可以参考网站 http://redisdoc.com/
Redis 的安装
直接使用 yum 即可进行安装
[root@ken ~]# yum install Redis -y
使用 yum 安装的 Redis 版本是 3.2 的
- [root@ken ~]# rpm -q Redis
- Redis-3.2.12-1.el7.x86_64
如果你想下载安装最新版本或者更高的版本可以再 Redis 官网站 https://redis.io 进行下载
Redis 命令使用
首先启动 Redis.Redis 监听的是本机的 6379 端口, 可以再配置文件中进行修改
- [root@ken ~]# systemctl restart Redis
- [root@ken ~]# ss -tnl
- State Recv-Q Send-Q Local Address:Port Peer Address:Port
- LISTEN 0 128 *:10050 *:*
- LISTEN 0 128 127.0.0.1:6379 *:*
- LISTEN 0 128 *:111 *:*
- LISTEN 0 128 *:22 *:*
- LISTEN 0 128 :::10050 :::*
- LISTEN 0 128 :::111 :::*
- LISTEN 0 128 :::80 :::*
- LISTEN 0 128 :::22 :::*
登录 Redis 使用命令 Redis-cli
- [root@ken ~]# Redis-cli
- 127.0.0.1:6379>
在上面已经介绍了几种 Redis 的数据类型, 下面一一进行示范演示
字符类型
常用操作
- 1. set key value #将字符串值 value 关联到 key
- 127.0.0.1:6379> set age 10
- OK
- 2. get key #返回 key 所关联的字符串值.
- 127.0.0.1:6379> get age
- "10"
- 3. APPEND key value #将 value 追加到 key 原来的值的末尾
- 127.0.0.1:6379> append age ken
- (integer) 5
- 127.0.0.1:6379> get age
- "10ken"
- 4. MSET key value [key value ...] #同时设置一个或多个 key-value 对
- 127.0.0.1:6379> mset addr jiangsu tel 123 gender male
- OK
- 5. MGET key [key ...] #返回所有 (一个或多个) 给定 key 的值
- 127.0.0.1:6379> mset addr jiangsu tel 123 gender male
- OK
- 127.0.0.1:6379> MGET addr tel gender
- 1) "jiangsu"
- 2) "123"
- 3) "male"
- 6. INCR key #将 key 中储存的数字值增一
- 127.0.0.1:6379> set num 1
- OK
- 127.0.0.1:6379> INCR num
- (integer) 2
- 127.0.0.1:6379> INCR num
- (integer) 3
- 127.0.0.1:6379> INCR num
- (integer) 4
- 127.0.0.1:6379> INCR num
- (integer) 5
- 127.0.0.1:6379> get num
- "5"
- 7. DECR key #将 key 中储存的数字值减一
- 127.0.0.1:6379> DECR num
- (integer) 4
- 127.0.0.1:6379> DECR num
- (integer) 3
- 127.0.0.1:6379> DECR num
- (integer) 2
- 127.0.0.1:6379> get num
- "2"
- 8. STRLEN key #返回 key 所储存的字符串值的长度
- 127.0.0.1:6379> STRLEN tel
- (integer) 3
- 127.0.0.1:6379> get tel
- "123"
- 127.0.0.1:6379> STRLEN num
- (integer) 1
- 127.0.0.1:6379> get num
- "2"
- 9. DEL key [key ...] #删除给定的一个或多个 key
- 127.0.0.1:6379> DEL age num
- (integer) 2
- 127.0.0.1:6379> keys *
- 1) "gender"
- 2) "addr"
- 3) "name"
- 4) "tel"
哈希表类型
常用操作
- 1.HSET key field value #将哈希表 key 中的域 field 的值设为 value
- 127.0.0.1:6379> hset myha ken 123
- (integer) 1
2.HGET key field 返回哈希表 key 中给定域 field 的值
- 127.0.0.1:6379> hset myha ken 123
- (integer) 1
- 127.0.0.1:6379> HGET myha ken
- "123"
- 3. HGETALL key #返回哈希表 key 中, 所有的域和值
- 127.0.0.1:6379> HGETALL myha
- 1) "ken"
- 2) "123"
列表类型
常用操作
- 1.LPUSH key value [value ...] #将一个或多个值 value 插入到列表 key 的表头
- 127.0.0.1:6379> lpush ken 1 2 3 4
- (integer) 4
- 2.RPUSH key value [value ...] #将一个或多个值 value 插入到列表 key 的表尾(最右边)
- 127.0.0.1:6379> RPUSH ken 7 8 9
- (integer) 7
- 3.LRANGE key start stop #返回列表 key 中指定区间内的元素, 区间以偏移量 start 和 stop 指定
- 127.0.0.1:6379> LRANGE ken 0 10
- 1) "4"
- 2) "3"
- 3) "2"
- 4) "1"
- 5) "7"
- 6) "8"
- 7) "9"
- 4. RPOP key #移除并返回列表 key 的尾元素
- 127.0.0.1:6379> RPOP ken
- "9"
- 127.0.0.1:6379> LRANGE ken 0 10
- 1) "4"
- 2) "3"
- 3) "2"
- 4) "1"
- 5) "7"
- 6) "8"
- 127.0.0.1:6379> RPOP ken
- "8"
- 127.0.0.1:6379> LRANGE ken 0 10
- 1) "4"
- 2) "3"
- 3) "2"
- 4) "1"
- 5) "7"
- 5. LLEN key #返回列表 key 的长度
- 127.0.0.1:6379> LLEN ken
- (integer) 5
- 6. LREM key count value #根据参数 count 的值, 移除列表中与参数 value 相等的元素
- 127.0.0.1:6379> LREM ken 2 3
- (integer) 1
- 127.0.0.1:6379> LRANGE ken 0 10
- 1) "4"
- 2) "2"
- 3) "1"
- 4) "7"
- 127.0.0.1:6379> LREM ken 2 2
- (integer) 1
- 127.0.0.1:6379> LRANGE ken 0 10
- 1) "4"
- 2) "1"
- 3) "7"
无序集合
常用操作
- 1.SADD key member [member ...] #将一个或多个 member 元素加入到集合 key 当中
- 127.0.0.1:6379> SADD kenken 1 2 3
- (integer) 3
- 2.SMEMBERS key #返回集合 key 中的所有成员
- 127.0.0.1:6379> SMEMBERS kenken
- 1) "1"
- 2) "2"
- 3) "3"
- 3.SCARD key #返回集合 key 的基数(集合中元素的数量)
- 127.0.0.1:6379> SCARD kenken
- (integer) 3
- 4.SREM key member [member ...] #移除集合 key 中的一个或多个 member 元素
- 127.0.0.1:6379> SREM kenken 3
- (integer) 1
- 127.0.0.1:6379> SMEMBERS kenken
- 1) "1"
- 2) "2"
有序集合
常用操作
- 1. ZADD key score member [[score member] [score member] ...] #将一个或多个 member 元素及其 score 值加入到有序集 key 当中
- 127.0.0.1:6379> ZADD ke 9 baidu
- (integer) 1
- 2.ZRANGE key start stop [WITHSCORES] #返回有序集 key 中, 指定区间内的成员
- 127.0.0.1:6379> ZRANGE ke 0 9
- 1) "baidu"
- 3.ZREM key member [member ...] #移除有序集 key 中的一个或多个成员
- 127.0.0.1:6379> ZREM ke baidu
- (integer) 1
- 127.0.0.1:6379> ZRANGE ke 0 -9
- (empty list or set)
来源: https://www.cnblogs.com/kenken2018/p/9959759.html