目录
1. Redis基础
常见非关系型数据库:
-
redis: 典型的非关系数据库
-
mogodb: 它是介于关系型和非关系之间。
-
hbase: 数据库【海量数据】
1.1 什么是Redis?
Redis 是一个基于内存的高性能 key-value 数据库。是完全开源免费的,用C语言编写的,遵守BSD协议。
特点(为什么使用?):
-
Redis 是基于内存操作的,吞吐量非常高,可以在 1s内完成十万次读写操作
-
Redis 的读写模块是单线程,每个操作都具原子性
-
Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启可以再次加载,但可能会有极短时间内数据丢失
-
Redis 支持多种数据结构,String,list,set,zset,hash等
1.2 Linux上安装Redis
(1)安装redis需要的环境
yum install -y gcc-c++
(2)解压redis压缩文件
tar -zxvf redis-6.2.7.tar.gz
(3)进入解压目录 并进行编译和安装
make install
(4)启动redis服务
redis-server redis.conf
(5)客户连接redis服务
-h: 表示连接redis服务所在的ip
-p: 表示连接redis服务的端口号==
redis-cli: 表示连接本地的redis服务
redis-cli -h ip -p port
127.0.0.1:6379>
1.3 redis.conf配置文件
259行 daemonize no: #设置redis服务启动时是否为守护进程 说白了就是后台运行 不占用单独窗口
98 行 port 6379 #修改redis的服务的端口号
75 行 bind * -::* #设置允许哪些ip连接redis服务器
timeout 0 #设置客户端连接时的超时时间,单位为秒。当客户端在这段时间内没有发出任何指令,那么关闭该连接。
tcp-keepalive 0 #指定 TCP 连接是否为长连接,"侦探"信号有 server 端维护。默认为 0.表示禁用。
loglevel notice #og 等级分为 4 级,debug,verbose, notice, 和 warning。生产环境下一般开启 notice。
logfile stdout #配置 log 文件地址,默认使用标准输出,即打印在命令行终端的窗口上,修改为日志文件目录。
databases 16 #设置数据库的个数,可以使用 SELECT 命令来切换数据库。默认使用的数据库是 0 号库。默认 16 个库。
1.4 redis常用的命令操作
中文教程网:redis命令手册
1.4.1 key操作
keys * #查看redis中所有的key
exists key #判断指定的key是否存在。存在返回1 否则返回0
del key #删除指定的key
expire key seconds #为指定的key设置过期时间。
1.4.2 关于库的命令
select n: 选中库 n=0~15
flushdb: 清空当前数据库
flushall: 清空所有库的数据
1.4.3 String数据类型相关
set key value: #存储字符串类型的value.
get key: #根据key获取对应的value字符串值。
mset key value key value ...: #存储多个字符串类型的value
mget key key key...: #获取多个key对应的value字符串值
setnx key value: #如果存在指定key,则不存入,如果不存在则存入。
incr key: #对指定的key的value值进行递增。key对应的value必须为整型字符串
decr key: #对指定的key的value值进行递减。
incrby key number: #按照number值进行递增
1.4.4 hash数据类型
基本语法:
hset key field value [field value]
常用命令示例:
hset student name wjq age 18 #存储hash数据 student为key name和age为键 wjq和18 为值
hget student name #获取name值
hget student age #获取age值
hgetall student #获取key(student)的所有数据 包括键和值
hkeys student #获取student的所有键
hvals student #获取student的所有值
hdel student name [field ...] #删除student的中一个或者多个键和对应值
1.4.5 List(列表)数据类型
基本语法:
lpush key element [element ...] 从左边存
rpush key element [element ...] 从右边存
常用命令示例:
lpush list aaa bbb ccc ddd eee #从左边存随list数据 list为key
lindex list 0 #从左边获取元素 eee
lrange list 0 -1 #获取指定范围内的元素
lpop list 1 #移除左边第一个元素 移除eee
lset list 0 DDD #替换指定位置的元素 将ddd替换为DDD
1.4.6 Set数据类型
基本语法:
sadd key member [member ...]
常用命令示例:
sadd s1 1 2 3 4 4 3 2 1 #成功存储元素 1 2 3 4
sadd s2 2 3 5 6 #成功存储元素 2 3 5 6
smembers s1 #获取所有元素
sinter s1 s2 #获取s1和s2交集 2 3
sdiff s1 s2 #获取s1和s2差集 1 4
sdiff s2 s1 #获取s1和s2差集 5 6
1.4.7 Sorted set有序集合
基本语法:
zadd key [NX|XX] [GT|LT] [CH] [INCR] score member [score member ...]
常用命令示例:
zadd k1 60 english 88 math 79 chinese #添加数据
zrange k1 0 -1 # 获取所有数据(不含分数)english math chinese
zrange k1 0 -1 withscores # 获取所有数据 排序
zrevrange k1 0 -1 withscores # 获取所有数据 从大到小
zrem k1 math english # 删除指定数据
1.5 Redis应用场景
希望你走了很远的路,最终找到的人是你自己