redis使用方法

1.安装

sudo apt-get redis-server

redis-server

2.命令

string:

set key value                get key

key不存在时增加 setnx key value     位操作   setbit key  位置1 0/1   位置2  0/1 

统计为1的bit数     bitcount key start end

list:

lpush key e1 e2                lrange key start end          lpop key        lrem key count value

为lpop的阻塞版本,在列表中没有元素时会阻塞。blpop key timeout        

只保留最近的start到end条记录。并且会按照插入时间排序。新的在前。ltrim key start end

hash:

hmset key f1 v1 f2 v2           hgetall key       hget key fieldname             给对应的f1的v1增加1   hincrby key f1 v           获取长度 hlen key        删除key中一个field        hdel key field

 set:

sadd key v1 v2                smembers key              统计元素个数 scard key

查找是否存在 sismember key v        查找key1和key2的交集 sinter key1 key2

查找差集 sdiff key1 key2

zset:

zadd key c1 m1 c2 m2            z(rev)range (逆序) ranks start end (withscores) 加上会显示分数c    

zrem key member        zscore key member        zcard key        

显示类型  type key   直接删除   del key   显示所有key         keys *

分布式锁

setnx lockname 1

set lockname 1 nx ex 30   设置30s后自动解锁

def lock

if (get(lockname) == 1)

        def (lock);

事务操作

一种乐观锁,事务进行时其他进程修改key会导致事务失败

watch key

multi

具体事务

exec

Lua脚本

把脚本编译成代码,减少传输开销

优化

操作分布式锁

分布式

在副服务器设置其主服务器。

看主库和库的run id是否相同,如果相同,使用增量更新,每次更新一个offset量,否则使用全量更新

保证可用性:

        哨兵模式

哨兵集群作用:

1.监听redis服务器是否宕机。

2.判断哪一个从redis的数据更新

3.把一个从redis作为主redis并且让其他从redis连接

4.将主redis更换的信息告诉client

开销很大,在必须保证主redis时使用。不能横向扩展,即不能增加结点。

        redis cluster集群

多个结点同时提供服务,可以从任意一个结点进入集群。通过把增加数据的槽位保证数据均衡。

具体配置:

使用6个文件夹,代表6个端口,表示6个redis结点,不能再少了

第一个log改成logfile

代码有错/g

把7005作为7001的从结点。

面试问题

由于lua脚本如果有先set,后lpush,这时set会成功,push会失败,所以lua没有一致性。

为啥redis要用44字节来划分使用数据类型,比如字符串小于44的使用embstr,大于44字节使用raw编码:

前者为redis基本数据结构,后者为适用于字符串的高效存储,并且buf需要适配非安全字符串(有\0的),所有共需20字节。同时cache line为64字节,且sds存储为redis的存储方式。64-20=44.所以以44分割。

fork写时复制。相当于给进程的内存创建一个快照。

复制时会复制出子进程和页表,并把页表状态修改为只读状态,多个进程使用同一个物理页。

在任意一个进程修改数据时,会把物理页复制,并将对应的页表状态设置为可读可写状态。

持久化:

aof基于缓存,aofwrite基于内存,rdb基于内存。在redis.conf(redis源码)中配置。

rdb在断电时可能会有较多的数据丢失,因为rdb会在规定的时间间隔中创建快照,然后对快照使用保存,而aof在always时会一直保存,并且保存的是命令不是数据,所以文件大,损失少

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值