redis的基础知识
一. redis的基础知识
-
NOsql:not only sql
非关系型数据库:主流的数据库以外,基本上都是nosql
非关系数据库也有库,库是系统自带的,而且也不需要创建,也不能创建,也无需在库中创建表,直接在预设的库中,以键值对的形式保存数据。(key=value)
键值之间没有任何关联,值可以是任意合法的数值。 -
redis: redis是开源的,使用c语言编写的nosql数据库。
redis: 内存型缓存数据库。
redis基于内存运行的,只有执行持久化操作之后,数据才会写入到磁盘中去(自带的,定时执行持久化)
1、持久化要打开
2、注意内存的使用率
二. redis的工作模式
- redis是单进程模式,启动一个就是一个进程,一台服务器可以启动多个redis的进程。(端口不能相同,默认端口为6379)
- 在工作中,要根据情况来选择开启多少个进程。单进程的话高并发的情况下处理速度也会降低。(进程的数量太多,会影响cpu的效率)
三. redis的特点
- 具有极高的读写速度,读取速度110000次/s,每秒钟81000/s次的写操作。
- 数据类型非常丰富
- 支持数据的支持化
- 原子性,redis的所有操作都是原子性。
- 也支持数据的备份和恢复以及集群。
redis: 排行榜,计数器,存储关系之类,实时日志记录,日志分析。
apt -y install redis
vim /etc/redis/redis.conf
68行
bind 127.0.0.1 192.168.246.6
systemctl restart redis
netstat -antp | grep 6379
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 2432/redis-server 1
tcp 0 0 192.168.246.6:6379 0.0.0.0:* LISTEN 2432/redis-server 1
命令行的命令
-
redis-cli:连接服务端的命令行
-
redis-benchmark:检测redis的运行效率
-
redis-check-aof:修复AOF的之久化文件
-
redis-check-rdb:修复RDB的持久化文件
-
redis-cli -h 192.168.246.6 -p 6379 -a 密码
-h 指定对方的ip地址
-p 指定端口
-a 密码 -
redis-benchmark -h 192.168.246.6 -p 6379 -c 100 -n 100000
-c并发
-n 请求
发送100个并发的链接和100000个请求的测试性能。
四. redis的数据类型和常用的命令
数据类型
- string:字符串 (最常见的类型,如无特殊申明默认类型)
string类型:redis的基础数据类型,最大的存储是512MB可以存储的数据类型,字符串,数字,图片等等。
exists:判断键值是否存在,存在返回1,否则返回0
append key:对已存在的键值,返回值的长度,不存的,直接创建键值对
strlen test1:返回值的长度
incr key:可以对键值的值自递增1
decr key:自减1
key的值必须是整数
incrby key 5:自定义增5
decrby key 5:自定义减5
MSET key1 1 key2 2 key3 3 #批量创建
mget key1 key2 key3 #批量查询
- list:列表类型
创建:lpush test10 a b c d
查看:lrange test10 0 3(知道值的个数)
lrange test10 0 -1 (0到最后一位)
rpush test11 a b c d (正向排序)
lrange test11 0 -1
lindex test11 2(根据索引下标查询)
lset test11 2 6 (更改索引下标)
LINSERT testll before a 10 (a之前添加)
LINSERT testll after a 11 (a之后添加)
- hash:散列
散列类型。用于存储对象,用对象的类别和id构成键名,用字段表示对象化的数据,字段值,就是对象的属性值。
创建:hset myhash jx66 10
查看:hget myhash jx66
删除:hdel myhash jx66
删除myhash:del myhash
对键值自增5:hincrby myhash jx66 5
批量创建:hmset test3 num 1 num2 2
显示全部:hgetall test3
只显示对象:hkeys test3
只显示值:hvals test3
- set:无序集合
声明一个key,键里面的值是元素,元素可以有多个,元素的类型是string
元素是唯一的,不能重复。
多个集合类型之间可以进行并集,交集,集差的运算。
创建:sadd test1 a b c c d
查看:smembers test1
查看元素个数:scard test1
随机查看:srandmember test1
随机移除:spop test1
将一个键里的元素与另一个交换:smove test1 test2
- sorted set:有序集合
声明一个key,键里面有元素,元素可以有多个,元素的类型是string
元素是唯一的,不能重复。
每个元素都会关联的double类型的分数,表示的是权重,元素可以通过权重的大小进行排序元素的权重可以相同。
创建:zadd test3 1one 2 two 3 three
查看元素与权重:zrange test3 0 -1 withscores
显示索引下标:zrank test3 one
权重大于1,小于2的个数:zcount test3 1 2
常用的命令
增
set 键 值
set test2 2
set test1 3 ex 30 #创建test3存活30秒
删
del test2 #删除键值对
改
select 1 #切换库
rename test1 test2 #修改键值对的名称
expire test1 30 #将已经创建好的键值对,设定生命周期
move test1 1 #对键值对移库
查
get test2 #查看键的值
keys * #查看库里的所有内容(在工作中不要使用)
keys ?任意单个字符
*任意长度
type test1 #查询键值的数据类型
ttl test1 #查看生命周期
dbsize #查看库里有多少键值对
redis的库
一共有16个库,0-15,默认是在0库
每个库之间的数据都是独立的。
键值对的生命周期
如果在默认条件,set的方式,都是永久存储。
设定生命周期
EX seconds | PX milliseconds
ex 以秒为单位计算生命周期
px: 以亳秒为单位计算生命周期
生命周期到期之后,会自动从库中删除。
设置密码
config set requirepass 123456
进入库未输入密码,将无操作权限
auth 123456 #库里面输入密码
root@u1:~# redis-cli -h 192.168.246.6 -p 6379
192.168.246.6:6379> set test1 1
(error) NOAUTH Authentication required.
192.168.246.6:6379> auth 123456
OK
192.168.246.6:6379> set test1 1
OK