Redis知识点

1. 五种数据类型

string (单值)

指令 描述
set 设置一个key/value
get 根据key获得对应的value
mset 一次设置多个key value
mget 一次获得多个key的value
getset getset age 19 获得原始key的值,同时设置新值
setex setex key ex value 设置一个key存活的有效期(秒)
psetex 设置一个key存活的有效期(豪秒)
setnx 只有当这个key不存在时等效set操作
msetnx 可以同时设置多个key,在key不存在时有效
strlen 获得对应key存储value的长度
append 为对应key的value追加内容
getrange 截取value的内容,对原始的值没有影响
decr 进行数值类型的-1操作
decrby 根据提供的数据进行减法操作
incr 进行数值类型的+1操作
incrby 根据提供的数据进行加法操作
incrbyfloat 根据提供的数据加入浮点数

list

指令 描述
lpush 将某个值加入到一个key列表头部
lpushx 同lpush,但是必须要保证这个key存在
rpush 将某个值加入到一个key列表末尾
rpushx 同rpush,但是必须要保证这个key存在
lpop 返回和移除列表的第一个元素
rpop 返回和移除列表的最后一个元素
lrange 获取某一个下标区间内的元素
llen 获取列表元素个数
lset lset key index value 设置某一个位置的元素(替换已有的某个值)
lindex lindex key index 获取某一个位置的元素
lrem lrem key 2 xxx 从列表头起,删除对应个数的指定元素
ltrim 保留列表中特定区间内的元素,将其他的元素删除
linsert key after/before old new 在某一个元素之前,之后插入新元素

set

指令 描述
sadd 为集合添加元素
smembers 显示集合中所有元素 无序
scard 返回集合中元素的个数
spop 随机返回并移除一个元素
smove smove setFrom setTo xxx 从一个集合中向另一个集合移动元素
srem 从集合中删除一个元素
sismember sismember set77 值 判断一个集合中是否含有这个元素
srandmember 随机返回元素,对原始数据没有影响
sdiff sdiff seta setb 减去两个集合中共有的元素
sinter 求交集
sunion 求并集

zset

指令 描述
zadd zadd key 10 a 5 b 30 c 添加一个有序集合元素,根据元素的score排序
zcard 返回集合的元素个数
zrange 返回一个范围内的元素
zrangebyscore 按照分数查找一个范围内的元素
zrank zrank key xx 返回对应元素的排名
zrevrank 返回对应元素倒序排名
zscore zscore key xxx 显示某一个元素的分数
zrem 移除某一个元素
zincrby zincrby key 10 lining 给某个特定元素加分

hash

指令 描述
hset 设置一个key/value对
hget 获得一个key对应的value
hgetall 获得所有的key/value对
hdel 删除某一个key/value对
hexists 判断一个key是否存在
hkeys 获得所有的key
hvals 获得所有的value
hmset 设置多个key/value
hmget 获得多个key的value
hsetnx 设置一个不存在的key的值
hincrby hincrby key k 2 为value进行加法运算
hincrbyfloat 为value加入浮点值
其他一些常见指令
`keys *` 查看所有key

`ttl key` 查看剩余存活时间

`del key` 删除key

`select 5` 切换到第6个库

`flushDB`  删除当前库的所有数据

2. Redis的持久化方式

讲到Redis的持久化,就不得不提一下Redis为什么要持久化。众所周知,redis的数据全部在内存中,如果突然宕机,数据就会全部丢失,因此必须有一种机制来保证redis的数据在遇到突发状况的时候不会丢失,或者只丢失少量,于是必须根据一些策略来把redis内存中的数据写到磁盘中,这样当redis服务重启中,就可以根据磁盘中的数据来恢复数据到内存中。
而Redis的持久化方式有RDB和AOF两种当二者同时运行,Redis会默认选择AOF
作为数据恢复原本

RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)。(保存的是数据集)
AOF持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集.(一般情况下一秒钟进行一次本地持久化)

3. RDB的执行原理

Redis 会单独的创建(fork) 一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程结束了,再用这个临时文件替换上次持久化还的文件。整个过程中,主进程是不进行任何 IO 操作,这就确保了极高的性能,如果需要进行大规模的数据恢复,且对于数据恢复的完整性不是非常敏感,那 RDB 方法要比 AOF 方式更加的高效。
RDB 的缺点是最后一次持久化后的数据可能丢失。(这一丢就可能会丢很多了)
Fork 的作用是复制一个与当前进程一样的进程,新进程的所有数据(变量、环境变量、程序计数器等)数值都和原进程一致,但是是一个全新的进程,并作为原进程的子进程(子线程的产生依赖于linux底层的c函数库中的fork()函数)

4. AOF重写的作用

为了解决AOF文件体积膨胀的问题,Redis提供了AOF重写功能:Redis服务器可以创建一个新的AOF文件来替代现有的AOF文件,新旧两个文件所保存的数据库状态是相同的,但是新的AOF文件不会包含任何浪费空间的冗余命令,通常体积会较旧AOF文件小很多。
BGREWRITEAOF 手动调用AOF重写功能

5. bind的作用

指定哪些端口可以访问我们的redis服务器
bindprotectmode要配合使用,而protectmode的值要写成yes

你可能感兴趣的:(Redis知识点)