Redis 黑马(学习记录)

2019-12-02  本文已影响0人  牍中玉的小木屋

redis: remote dictionary server 远程数据服务,内存高速缓存数据库,C语言编写的

数据保存在内存中,数据模型为key-value,redis实现了内存中数据的持久化,定时存储到硬盘中。

Redis 的应用场景

mysql数据库,数据是以文件形式存储在硬盘里面

缓存:数据缓存、页面缓存(smarty)
目的:如果数据在短时间内不会发生变化,提高用户的请求速度和降低网站的负载,读取速度更快的介质
存储介质:文件、数据库、内存,内存是经常用于数据缓存

缓存形式:
页面缓存,经常用在CMS内存管理系统里面
数据缓存,经常用在页面的具体数据里面

举个栗子

Redis 和 memcache 比较

redis-cli 启动redis客户端脚本文件
redis-server 启动redis服务脚本文件
redis-benchmark 压力测试文件
redis-check-aof
redis-check-dump 检测设备文件脚本

创建redis的运行目录,并拷贝文件
cp src/redis-cli /usr/local/redis
cp src/redis-server /usr/local/redis
cp redis.conf /usr/local/redis

修改redis.conf,改为后台启动服务。
---> daemonize yes (17行)

启动服务

./redis-server redis.conf
ps -A | grep redis
./redis-cli

基本操作

set name du
get name

keys 键操作
keys * 查询所有 key
keys app*  查询匹配的 key
exists key  测试指定的key是否存在
del key1 key2 ...  删除指定的key
type key  返回key的类型
keys pattern  返回匹配结果 (*)
rename oldkey newkey  改名字
dbsize  返回当前数据库的key的数量
expire key seconds  为key指定过期时间
ttl key  返回key的剩余时间
select db-index  选择数据库
move key db-index 将 key 从单签数据库移动到指定的数据库
flushdb  删除当前数据库中的所有 key 
flushall  删除所有数据库中的所有 key
config get databases  查询一共有多少数据库

redis 默认有 16 个db(数据库)

数据类型

string 类型操作

set key value  设置 key 对应的值为 string 类型
mset key1 value1 ... keyn valuen  一次性设置多个 key
mget key1 key2 ... keyn  一次性读取多个 key
incr key  加加 i++ , key 必须为 整数
decr key  减减 i-- , key 必须为 整数
incrby  key integer 同 incr ,integer 步进
decrby key integer 同 decr ,integer 步进
append key value  给指定 key 的字符串值追加 value
substr key start end  返回截取过的 key 的字符串值 

list 类型数据(双向链表)

lpush key string  在 key 对应 list 的头部添加字符串元素
rpop key  从 list 的尾部删除元素,并返回删除元素
llen key  返回 key  对应,list 的长度,key 不存在返回 0,如果 key 对应类型不是 list 返回错误
lrange key start end  返回对应区间内的元素,下表从 0 开始
rpush key string  同上,在尾部添加字符串元素
lpop key  从 list 的头部删除元素,并返回删除元素
ltrim key start end  截取 list ,保留制定区间内元素

set 集合类型
redis 的 set 是 string 类型的无序集合。
set 元素最大可以包含(2^{32}-1)个元素。

sadd key member  添加一个 string 元素到 key 对应的 set 的集合中,成功返回 1,如果元素已经在集合中 返回 0,key 对应的 set 不存在返回错误
srem key member [member]  从 key 对应 set 中移除给定元素,成功返回1
smove p1 p2 member  从 p1 对应 set 中移除 member 并添加到 p2 对应 set 中
scard key  返回 set 的元素个数
sismember key member  判断 member 是否在 set 中
sinter key1 key2 ... keyn  返回所有给定 key 的交集
sunion key1 key2 ... keyn  返回所有给定 key 的并集
sdiff key1 key2 ... keyn  返回所有给定 key 的差集
smembers key  返回 key 对应 set 的所有元素,结果是无序的

这一块还需要补充

Sort Set 排序集合类型
和 set 一样,sort set 也是 string 类型元素的集合,不同的是每一个元素都会关联一个
通过权值可以有序的获取集合中的元素

zadd key score  member 添加元素到集合,元素在集合中存在则更新对应 score 
zrem key member  删除指定元素,1表示成功,如果元素不存在返回 0
zincrby key incr member  按照 incr 幅度增加对应 member 的 score 值,返回 score 值
zrank key member  返回指定元素在集合中的排名(下标),集合中元素是按 score 从小到大排序的
zrevrank key member  同上,但是结合中元素按 score 从大到小排序的
zrange key start end  类似 lrange 操作,从集合中取指定区间的元素,返回的是有序结果集
zrevrange key start end 同上,返回结果是按 score 逆序的
zcard key  返回集合中元素个数
zscore key element  返回给定元素对应的 score
zremrangebyrank key min max  删除集合中排名在给定区间的元素

zremrangebyrank key min max 删除排名在指定范围的元素(权值从小到大排序)

重复元素
set 没有重复
list 可以有重复
sort set 没有重复值

hash 类型

事务

multi 开启事务
exec  执行事务
discard  回滚

持久化功能

redis 为了内部数据安全考虑,会把本身的数据以文件形式保存到硬盘中一份,在服务器重启之后会自动把硬盘的数据恢复到内存(redis)中。
数据保存到硬盘的过程就称之为“持久化”效果。

分类:

每次生成快照都需要耗费相当多的资源,如果频率过高,数据保持了相对安全(不丢失),但是服务器的资源都被生成快照占用了,怎么办?

精细持久化,秒级,特别的耗费性能,但是如果一秒内有大量的修改,那么这种精细持久化,就体现出来了价值,“一次保存很多”。考虑下双十一,抢购等活动

上一篇下一篇

猜你喜欢

热点阅读