redis入门学习,redis入门
/usr/loca/redis目录下:./redis-server
后端启动带配置文件启动redis:
/usr/local/redis目录下: ./redis.server redis.conf
退出:Ctrl+C
/usr/local/redis 目录下: ./redis-cli
设置变量:
set name tom
set age 21
set addr beijing
获取变量:get name、get age、get addr
具体实用(二)
除了“\n”和空格不能作为名字的组成内容外,其他内容口可以作为key的名字部分,名字长度不做要求。
exists key 测试指定key是否存在
del key1 key2 .... kn 删除指定key
type key 返回指定key的value类型
Keys pattern 返回匹配指定模式(keys a*)
rname oldkey newkey 改名字
dbsize 返回当前数据库的key数量
expire key seconds 为key指定过期时间
Ttl key 返回key的剩余过期秒数
Select db-index 选择数据库(16[标号:0-15]个)
Move key db-index 将key从当前数据库移动到指定数据库
Flushdb 删除当前数据库中所有的key
Flushall 删除所有数据库中所有的key
String类型操作
String 是redis最基本的类型
Redis的string可以包含任何数据。包括.jpg图片(二进制)或者序列化对象。
单个value值最大上限是1G字节。
如果只用string类型,redis就可以看做加上持久化特性的memcache
Set key value 设置key对应值为string类型的value
Mset key1 value1 .....keyN valueN 一次性设置多个key的值
Mget key1 key2 ..... keyN 一次性获取多个key的值
Incr key 对key的值做加加操作,并返回新的值
Incrby key integer 加指定值
Decrby key integer 减指定值
Append key value 给指定key的字符串值追加value
Substr key start end 返回截取过的key的字符串值
List类型操作
List类型是一个双向链表,通过push,pop操作从链表的头部或者尾部添加删除元素。这使得list既可以作用栈,也可以作用队列。
List应用场景:
获取最新的10个登录用户信息:select * from user order by logintime desc limit 10; 数据量大时全部数据收到影响,对数据库负载高,必要情况加索引,索引比较耗费系统资源。
如果通过list实现这个功能,可以在list中只保留最新的10个数据,每次进来一个新的数据就删除一个旧的数据,极大节约资源消耗。
Lpush key string
Rpop key 从List尾部删除元素,并返回该元素
llen key 返回 key
Lrange key start end
Ltrim key start end 截取list
set集合类型操作
Redis的set是string类型的无序集合,不能重复。
Set元素最大可以是2的32次方-1 个元素。(42亿多)
Set集合类型除了基本的添加删除操作,取并集,交集,查集。通过这些操作可以很容易的实现sns中的好友推荐功能。
sadd key member
Sinter key1 key2 ... keyN 返回所有给定key的交集
Sunion key1 key2 ... keyN 返回所有给定key的并集
Sdiff key1 key2 ... keyN 返回所有给定key的差集(两个集合顺序有影响)
Smenbers key 查看set所有元素
Sismember key menber 该元素是否存在于set中(1在 0不在)
Scard 返回set中元素的个数
Smove p1 p2 member 从p1中把member移动到p2中
Srem key member [member] 移除元素,成功返回1
Sort Set 排序集合类型
和set一样sorted set 也是string类型元素的集合,不同的是每一个元素会关联一个权。通过权值可以有序的获取集合中的元素。
Sort set 类型适合场景:
获得热门帖子(回复量):select * from message order by backnum desc limit 5; (单该sql比较耗费MySQL数据库资源。)
Zadd key score member 添加元素到集合,score是权值,member是值
Zrevrange key start end 按score(权值)逆序
Zrank key member 返元素在回集合中的排名,由小到大排序的
Zrevrank key member
Zrange key start end
Zremrangebyrank key min max 删除集合中排名在给定区间的元素(权值由小到大排序)
Zcard key 返回元素个数
Zscore key element 返回元素的权值
Zrem key member 删除指定元素
Zincrby key incr member 给成员增加权值
Hash数据类型
hash数据类型存储的数据与mysql数据库中存储的一条记录极为相似。
持久化功能
Redis为了内部数据的安全考虑,会把本身的数据已文件的形式保存到硬盘中一份,在服务器重启之后自动把硬盘的数据恢复到内存(redis)的里边,数据保存到硬盘的过程就称为“持久化”过程。
Snap shotting 快照持久化
redis.conf 配置文件中:
(15分钟) save 900 1 超过1个Key数据被修改,则持久化一次
(5分钟) save 300 10 超过10个Key数据被修改,则持久化一次
(1分钟) save 60 10000 超过1w个Key数据被修改,则持久化一次
1.1手动发起快照持久化
2.append onluy file(AOF持久化) 精细持久化(秒级)
给别的主机发起快照持久化命令:
./redis-cli -h (主机IP地址) -p (主机端口号) bgsave
自己的电脑:./redis-cli bgsave
Redis持久化相关命令:
Bgsave 一步保存数据到磁盘(快照保存)
Lastsave 返回上次成功保存到磁盘的Unix时间戳
Shutdown 同步保存到服务器并关闭redis服务器
Bgrewriteaof 当日志文件过长时优化AOF日志文件存储
./redis-cli bgrewriteaof
./redis-cli bgsave
./redis-cli -h 127.0.0.1 -p 6379 bgsave #手动发起快照
Append only file(AOF持久化)
本质:把用户执行的每个“写”指令(添加、修改、删除)都备份到文件中,还原数据库的时候就是执行具体写指令而已。
开启AOF持久化(会清空redis内部的数据)
(同时可以修改备份文件的名字,默认是appendonly.aof)
配置文件被修改,需要删除旧进程。
查看旧的进程:ps -A | grep redis
杀死进程(不管进程做什么,可能造成数据丢失): kill -9 (查出来的端口号)
redis.conf配置文件中备份频率:
appendfsync always 表示每“写”一次备份一次,数据安全性最高,但是耗费资源。不推存使用
appendfsync everysec 表示每秒备份一次,数据安全性中等,性能中等。折中,推存。
appendfsync no 表示看服务器是否处于繁忙状态,如果是则暂时不备份,如果不忙则备份。数据不安全,行能最高。持久化没保证。
2.1为aof备份文件做压缩优化处理:
./redis-cli -h (主机号) -p (端口号) bgrewriteaof
自己的主机:./redis-cli bgrewriteaof
例如:对个incr 指令做优化处理