redis基本使用

Redis数据库基本使用

一、什么是redis?

  Redis(Remote Dictionary Server):使用C语言开发的内存高速缓存数据库。数据模型为key-value:键值对。且支持数据持久化,保证数据安全。
  后端启动redis:修改redis配置文件redis.conf中daemonize no(改为yes),执行./redis-server redis.conf,后启动终端./redis-cli即可使用。

二、redis中对key的操作

  key命名:除’\n’和空格外,其他字符均可组成key名称,长度不做要求。

指令作用
exists key测试指定的key是否存在
del key1 key2 …删除指定的key
type key返回指定key的value类型
keys pattern返回匹配指定模式的所有key
rename oldkey newkey修改key名称
dbsize返回当前数据库的key数量
expire key seconds为key设置过期时间
ttl key返回key的剩余过期秒数
select db-index选择数据库
move key db-index将key从当前库移动到指定的库
flushdb删除当前数据库中所有key
flushall删除所有数据库中的所有key

  db-index:redis默认最多共有16个数据库[0-15]。


String类型操作
  String类型是redis最基本的数据类型,可包含任何数据(jpg图像或序列化的对象等),单个value值得上限为1G字节。
  如果只使用string类型,redis可看作加上持久化特性的mamcache。

指令作用
set key value设置key的值为value
get key获取key的值
mset key1 value1 key2 value2…一次性设置多个key的值
mget key1 key2 …一次性获取多个key的值
incr key对key的值做加操作并返回新的值
decr key对key的值做减操作并返回新的值
incrby key integer同incr,加上指定值
decrby key integer同decr,减去指定值
append key value给指定的key的字符串追加value
substr key start end返回截取过的key的字符串值

incr:该指令对key进行+1操作(默认累加1);对新key或已有key进行操作(新key:创建并加一,即:值为1;以后key:已有key的信息值类型要求必须为整型)。

decr:与incr类似,执行-1操作。
substr key start end:对内容进行截取,包括start和end标记位置内容。


list链表类型
  实质为双向链表。通过push和pop进行操作从链表的头部或尾部增删元素。这使得list即可作为栈,也可作为队列。

指令作用
lpush key string在key对应的list头部添加字符串
rpop key从list的尾部删除元素,并返回删除元素
llen key返回对应list的长度,不存在返回0,非list返回错误
lrange key start end返回指定区间的内容,下标从0开始
rpush key string在尾部添加字符串
lpop key从list头部删除元素,并返回删除元素
ltrim key start stop截取list,保留指定区间内元素

set集合类型
  string类型的无序集合。set元素最大可包含2 的 32次方 - 1 个元素。
  基本操作:增、删、交、并、差(例:好友推荐功能的实现)。
  每个集合中的元素不能重复。

指令作用
sadd key member增加一个string元素到对应的set集合,成功:1,已存在:0,set不存在:错误
srem key mem1 mem2 …从key对应set中移除指定元素,成功:删除的mem数量
smove p1 p2 member将member从p1对应的set中移动到p2对应的set中
scard key返回set中的元素数量
sismember key member判断member是否存在set中
sinter key1 key2…返回所有给定key的交集
sunion key1 key2…返回所有给定key的并集
sdiff key1 key2…返回所有给定key的差集
smembers key返回key对应的set的所有元素

sort set排序集合类型
  string类型元素的集合。每个元素会关联一个权值,通过权值可以有序的获取集合中的元素。应用:获取热门类型信息。

指令作用
zadd key score member添加权值为score的成员,若存在则更新权值为score
zrem key member删除指定元素,成功返回1,不存在返回0
zincrby key incr member将指定的member的score值增加incr,并返回新的score
zrank key member返回member在集合中的下标,从小到大排序
zrevrank key member同zrank,从大到小排序
zrange key start end返回接货中指定区间的元素,返回有序结果
zrevrange key start end同上,按照score逆序
zcard key返回集合中元素个数
zscore key element返回指定元素的score
zremrangebyrank key min max删除集合中给定区间的元素(score从小到大)

hash
  与mysql数据库中存储的一条记录极为相似。

指令作用
hset key field value设置hash field为指定值,若key不存在,则先创建
hget key field获取指定的hash field
hmget key field1 field2…获取多个hash field
hmset key field1 value1 …设置多个hash field
hincrby key field integer将指定的hash field增加指定值
hexists key field测试指定hash field是否存在
hdel key field删除指定hash field
hlen key返回指定hash的field数量
hkeys key返回hash的所有field
hvals key返回hash的所有value
hgetall key返回hash的所有field和value

三、持久化功能

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

(1)snap shotting快照持久化

  该持久化默认开启,一次性把redis中全部的数据保存一份存储在硬盘中,如果数据非常多(10 - 20G),则不适合频繁做该持久化操作。
  对应文件dump.rdb
  对应redis.conf中配置项:
    save 900 1 #900秒内发生一次修改,进行持久化
    save 300 10 #300秒内发生10此修改,进行持久化
    save 60 10000 #60秒内发生10000此修改,进行持久化
  可采用每小时进行一次快照持久化,期间进行精细持久化(可达到秒级)。
  快照持久化可精细持久化可以尽最大努力保证数据的安全。
手动发起快照持久化:
  reddis-cli -h ip -p port bgsave
  bgsave:异步保存数据到磁盘(按快照保存)
  lastsave:返回上次成功保存到磁盘的Unix时间戳
  shutdown 同步保存到服务器并关闭redis服务器
  bgrewriteaof:当日志文件过长时优化aof日止文件存储

(2)append only file(AOF持久化)

  本质:将用户执行的每个“写”指令(添加、修改、删除)都备份到文件中,还原数据的时候就是执行具体指令而已。
  开启aof持久化(会清空redis内部的数据):配置文件修改后需要删除旧进程,根据新的配置文件重启开启新进程。

频率:每秒			
# appendfsync always //每次收到写命令立即强制写入磁盘,最慢,保证完全的持久化,不推荐使用
appendfsync everysec//每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,推荐
# appendfsync no//完全依赖os,性能最好,持久化没保证。
为aof备份优化
./redis-cli -h -ip -p port bgrewirteaof

四、主从模式

主服务器:写入服务 从:查询、读取服务(耗时)
为降低每个redis服务器的负载,可以多设置几个,并做主从模式。
一个服务器负载“写”数据,其他服务器负载“读”数据。
主服务器会“自动“同步给从服务器。
对应配置项:
  slaveof: ip port
  slave-read-only yes
redis主从模式示例图

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值