REDIS1.0
redis的基础知识:
NOsql: not only sql
非关系型数据库:主流的数据库以外,基本上都是nosql
非关系型数据库也有库,库是系统自带的,而且也不需要创建,也不能创建,也无需在裤子创建表,直接在预设的库中,以键值对的形式保存数据
key — value
键值之间没有任何关联,值可以是任意合法的数据
redis:redis是开源的,使用c语言编写的nosql数据库
redis是基于内存运行的,只有执行持久化操作之后,数据才会写入到磁盘中去(自带的,定时执行持久化)
-
1、持久化要打开
-
2、注意内存的使用率(它是内存型缓存数据库,对内存要求较高)
-
3、redis的工作模式:redis是单进程模式,启动一个就是一个进程,一台服务器可以启动多个redis的进程,端口不能相同 ----------它的默认端口是6379
-
4、在工作中,要根据情况来选择开启多少个进程,单进程的话高并发的情况下处理速度也会降低,进程的数量太多,反而会影响cpu的效率
redis的特点:
1、具有极高的读写速度,读取速度:110000次/秒,写速度:81000次/秒
2、数据类型非常丰富
3、支持数据持久化
4、原子性,redis的操作都是原子性
5、也支持数据的备份和恢复,以及集群
redis: 排行榜、计数器、存储关系之类
vim /etc/redis/redis.conf
systemctl restart redis
redis-cli -h 192.168.31.18 -p6379 -a 密码
- -h:指定对方的ip地址
- -p:指定端口
- -a:密码
redis-benchmark -h 192.168.31.18 -p6379 -c 100 -n 100000
- -c:并发
- -n:请求
发送100个并发的链接和100000个请求的测试性能
redis的数据类型和常用的命令:
数据类型:
1、string 字符串,最常见的类型,如无特殊声明,默认就是此类型
2、list 列表类型
3、hash 散列
4、set 集合
5、sorted set 有序集合
redis的库:
一共有16个库,0~15库,默认在0库
每个库之间都是独立的
keys * 在生产中是禁用的:展示所有数据,会整个卡死
- keys t?(问号表示任意单个字符)
- keys t*(表示任意长度)
type :查询键值的数据类型
rename test1 test3 :修改名称
键值对的生命周期:
如果在默认的条件,set的方式,都是永久存储
set test1 3 ex 30:
- ex:以秒为单位计算生命周期
- px:以毫秒为单位计算生命周期
ttl test1 查看生命周期:生命周期到期之后,会自动从库中删除
EXPIRE test1 30:对已经创建好的键值对,设定生命周期
move test1 1 :将test1 转移到1库中
DBSIZE:查看当前库key的数量
config set requirepass 123456:设定redis密码
(退出后重新登录,登录前如果不输入密码,所有操作都是禁止的)
auth 123456:在命令行输入密码
数据类型:
string类型:redis的基础数据类型,最大的存储是512MB,可以存储的数据类型,字符串,数字,图片
exists test1:判断键值是否存在,0为不存在,1则存在
append test1 1:(如是已存在的键,返回值的长度,如果不存在则直接创建)
strlen test1:返回值的长度
incr key:可以对键值的值自增1
decr key:可以对键值的值自减1
key的值必须是整数
incrby key 5 :增5
decrby key 5:减5
批量设置、批量查询键值对:
mset(设置):mset key1 1 key2 2 key3 3
mget(查询):mget key1 key2 key3
2、list列表数据类型:
lpush 列表名称 对象(可以是多个,从左到右依次插入)
lrange + 列表名 0 -1:查询列表 -------- 用get无法查询列表
rpush test11 a b c d(rpush正向排序 ------ 从左到右,a为第一个)
lindex 列表名 + 值的索引下标:根据索引下标的值查询
lset 列表名 + 旧下标 +新下标 :修改索引下标的值
linsert test11 before a 10:在a之前插入数字10
linsert test11 after a 11:在a之前插入数字11
3、hash数据类型
散列类型,用于存储对象,用对象的类别和id构成键名,用字段来表示对象的属性,字段值就是对象的属性值
hset myhash xy105 汽车
键名+对象名+属性
hget 键名 对象名:查看
hdel myhash xy105 汽车:删除myhash这个键中,xy105对象中的汽车属性
如果要删除键就用del
hset test1 number 10
hincrby test1 number 5(值加5)
hmset test1 1 test2 2 test3 3:(一次创建多个)
hmget test1 test2 test3
hkeys test2:只显示对象
hvals test:只显示对象的属性