Redis 一、概述 1. 特点
开源的,使用c编写,基于内存且支持持久化
高性能的Key-Value的NoSQL数据库
支持数据类型丰富(字符串string、散列hashes、列表list、集合sets、有序集合sorted)
支持多种语言
2. 区别MySQL:关系型数据库,表格,基于磁盘,慢
MongoDB:键值对文档型数据库,值为json文档,基于磁盘,慢,存储数据库类型单一
Redis:解决硬盘IO带来的性能瓶颈
3. 应用场景使用Redis来缓存一些经常被用到或者主要消耗大量资源的内容,通过这些内容放到Redis里面,程序可以快速读取这些内容
一个网站,如果某个页面经常被访问到,或者创建页面时消耗的资源较多,比如需要多次访问数据库、生成时间比较长等,我们可以使用Redis将其缓存起来,减轻网站负担,降低网站延迟
4. 附加功能
持久化
将内存中数据保存到磁盘中,保证数据安全,方便进行数据备份和恢复
发布与订阅
将消息同时分发给多个客户端,用于构建广播系统
过期键功能
为键设置一个过期时间,让他在指定时间内自动删除
事务功能
原子的多个操作
5. 安装 Ubuntusudo apt-get redis-server
Windows前往GitHub下载Windows安装包,Redis官网并没有Windows版本的。
服务配置
将redis.windows.conf重命名为redis.conf,作为redis服务的配置文件
cmd命令行,切换到redis-server.exe目录
redis-server --service-install redis.conf --loglevel verbose
计算机-管理-服务-Redis-启动
卸载
到redis-server.exe所在路径执行
redis-server --service-uninstall
sc delete Redis
CentOSCentOS安装Redis
二、基本配置 1. 密码配置进入配置文件,查找requirepass后边加上密码
重启服务sudo /etc/init.d/redis-server restart
客户端连接redis-cli -h 127.0.0.1 -p 6379 -a 123456
ping
2. 允许远程 vim /etc/vim /etc/redis/6379.conf #注释bind 127.0.0.1 ::1 #将protected-mode yes 改为 protected-mode nobash redis-cli -h IP -p 6379 -a passworld 三、数据类型 1. 字符串特点
字符串、数字,都会转换为字符串来存储
命令
set key value #设置键值对 setnx key value #键不存在时才能设置 #设置过期时间 set key value ex 5 #以秒为单位 expire key 5 #在创建的时候并没有指定时间 mset key1 value1 key2 value2 #一次性设置多个值 mget key1 key2 key3 #同时获取多个值键的命名规范
利用:层级关系
127.0.0.1:6379> mset zhang:email zhang@163.com li:email li@163.com OK 127.0.0.1:6379> mget zhang:email li:email 1) "zhang@163.com" 2) "li@163.com" 1.1 长度作用:获取值的长度
命令格式:strlen key
127.0.0.1:6379> get name "danni" 127.0.0.1:6379> strlen name (integer) 5 1.2 替换setrange key 索引值 value
作用:从索引值开始,value替换原内容(依次替换)
127.0.0.1:6379> set message "hello world" OK 127.0.0.1:6379> setrange message 6 python (integer) 12 127.0.0.1:6379> get message "hello python" 1.3 切片getrange key 起始值 终止值
作用:获取指定范围内的
127.0.0.1:6379> get message "hello python" 127.0.0.1:6379> getrange message 0 4 "hello" 127.0.0.1:6379> getrange message 0 -1 "hello python" 1.4 拼接append key "value"追加后边的值
127.0.0.1:6379> set message "hello " OK 127.0.0.1:6379> get message "hello " 127.0.0.1:6379> append message "python" (integer) 12 127.0.0.1:6379> get message "hello python" 1.5 加incrby key 步长在原来的value上+步长
127.0.0.1:6379> set number 10 OK 127.0.0.1:6379> incrby number 5 (integer) 15 127.0.0.1:6379> get number "15" 1.6 减decrby key 步长同上,为减法
127.0.0.1:6379> get number "15" 127.0.0.1:6379> decrby number 5 (integer) 10 127.0.0.1:6379> get number "10" 1.7 浮点型INCRBYFLOAT key value加法,如果value为负数,则为减法
127.0.0.1:6379> get number "18" 127.0.0.1:6379> INCRBYFLOAT number 6.66 "24.66" 127.0.0.1:6379> INCRBYFLOAT number -6.66 "18" 1.8 汇总 #字符串 1、set key value 2、setnx key value 3、get key 4、mset key1 value1 key2 value2 5、mget key1 key2 6、set key value ex seconds # 设置过期时间 7、strlen key #数字操作 8、incrby key 步长 9、decrby key 步长 10、incr key 11、decr key 12、incrbyfloat key number #设置过期时间的两种方式 #方式一 1、set key value ex 3 #方式二 1、set key value 2、expire key 3 #秒 3、pexpire key 5 #毫秒 #查看存活时间 ttl key # 删除过期 persist key 1.9 通用命令 # 查看所有键 keys * # 键类型 type key # 键是否存在 exists key # 删除键 del key # 键重命名 rename key newkey # 返回旧值并设置新值(如果键不存在,就会创建并赋值) getset key value # 清除当前库中的所有数据 flushdb # 清除所有库中的所有数据 flushall 1.10 练习查看db0中的所有键
select 0
keys *
设置键trill::username 对应的值为user001,并查看
set trill::username user001
获取trill::username 值长度
strlen trill::username
一次性的设置trill::password、trill::gender、trill::fansnumber并查看(值自定义)
mset trill::password 123456 trill::gender boy trill::fansnumber 100
查看键trill::score是否存在
exsits trill::score
增加10个粉丝
incrby trill::fansnumber 10
增加2个粉丝
incr trill::fansnumber
incr trill::fansnumber
减少3个粉丝
decrby trill::fansnumber 3
又有一个粉丝减少
decr trill::fansnumber
清除当前库
fulshdb
清除所有库
fulshall
特点:
元素是字符串类型
列表头尾增删快,中间增删慢,增删元素是常态
元素可重复
最多可包含个元素
索引同python列表
2.1 插入头尾压入元素
lpush key value1 value2 value3头部压入数据