Redis命令用于在redis服务上执行操作。
要在 redis 服务上执行命令需要一个 redis 客户端。Redis 客户端在我们从官网下载的的 redis 安装包中。
语法
启动Redis 客户端的基本语法为:redis-cl
ping 命令用语检查 redis服务是否启动
在远程服务上执行命令
$ redis-cli-h host-p port-a password
KEY命令
String类型及操作
1.set:设置key对应的值为string类型的value
2.setnx:nx是not exist的意思
3.setex:指定此键值对应的有效期
4.setrange:设置制定key的value值的子字符串
5.mset、msetnx:一次设置多个键值
6.get:获取key对应的string值
7.getset:设置key的值,并返回key的旧值
8.getrange:获取key的value值的子字符串
9.mget:一次获取多个key值
10.incr:对key的值做加加操作
11.incrby:同incr类似,加指定值
12.decr:对key的值做减减操作
13.decrby:同decr,减指定值
14.append:给指定的key追加value
15.strlen:去指定key的value值的长度
hashes类型及操作
1.hset:设置hash filed为指定值,如果key不存在,则先创建
2.hsetnx:设置hash filed为指定值,如果key不存在,则先创建
3.hmet:同时设置hash的多个filed
4.hget:获取指定的hash filed
5.hmget:获取全部指定的filed
6.hincrby:指定的filed加上给定值
7.hexists:指定filed是否存在
8.hlen:删除指定filed
9.hkeys:获取hash的所有filed
10.hvals:返回hash的所有value
11.hgetall:获取hash中全部的filed及value
lists类型及操作
1.lpush:在key对应的头部添加字符串元素
2.rpush:在可以对应的尾部添加字符串元素
3.linsert:在list的特定位置之前或之后添加字符串元素
4.lset:设置list 中指定下标的元素值
5.lrem:从list中删除count个和value相同的元素,count>0 按从头到尾的顺序删除,count<0 按从尾到头的
顺序删除,count=0删除全部
6.ltrim:保留指定key的值范围内的数据
7.lpop:从list的头部删除元素,并返回删除元素
8.rpop:从list的尾部删除元素,并返回删除元素
9.rpoppush:删除第一个list的尾部元素添加到第二个元素头部
10.lindex :获取list中index位置的元素
11.llen:获取list的长度
持久化机制
Redis能在生产环境使用的持久化方式有两种:
1.定时快照方式(snapshot):
该持久化方式是在Redis的内部设置一个定时器,定时检查数据变化的次数和时间是否匹配持久话出发的条件,
如果满足就通过操作系统fork调用创建一个子进程,父子进程享有相同的物理页面,当父进程处理写请求时,
OS会为父进程要修改的页面创建副本,而不是写共享的页面。所以子进程地址空间内的数据是fork时刻整个
数据库的一个快照。当子进程将快照写入临时文件完毕后,用临时文件代替原来的快照文件,然后子进程退出。
缺点:快照只是代表一段时间内的内存映像,所以系统重启会丢失最后一次快照后的所有数据。
2.基于语句追加方式(aof)
类似MySQL的binlog方式,每条写命令都会通过write函数追加到一个log文件中。由于OS会在内核中缓存write
做的修改,所以可能不会立即写到磁盘上。可以配置Redis调用fsync函数强制OS写入到磁盘的时机。有三种方式
如下:
a. appendsync always // 收到写命令立即写入磁盘,最慢,但最保证完全的持久化
b. appendsync everysec // 每秒钟写入磁盘一次,在持久化和性能方面做了很好的折中
c. appendsync no // 完全依赖OS,性能最好,持久化没有保证
缺点:log文件的体积会越来越大,当系统重启恢复数据时加载会非常慢。由于每条写命令都要写log,Redis的读写性
能也会有所下降。
Redis提供了bgrewriteaof命令来压缩aof的持久化文件,收到此命令Redis使用类似于快照的方式将内存中的数据以
命令的方式保存到临时文件中,最后替换原来的文件。
网友评论