1-2: redis string|hash 命令
- set key value:添加元素
- get key: 获取元素值
3: redis list 命令
- 查看:
* lrange key start end: 获取链表中从start 到 end 的元素的值,
start end 从0 开始计算,也可以为负数,
若为-1,则表示链表的尾部元素,-2表示倒数第二
个, 依次类推- 添加:
lpush key values[value1 value2 …]: 从左端一次插入元素
rpush key values[value1 value2 …]: 从右端一次插入元素- 删除:
lpop key:从左端弹出元素
rpop key:从右端弹出元素- 扩展命令:
llen key:返回指定的key关联链表中的元素数量
lrem key count value: (效率极为低下,要重新赋索引)
删除count 个职位value的元素,如果ount大于0,从头
向尾遍历并删除count个值为value的元素,如果count小于0,则从
尾部向头部便利并删除,如果count等于0,则珊瑚链表中所有等于
value 的元素;
lset key index value: 设置链表中的 index 脚标的元素值 0 代表链表的头元素,
-1 代表链表的尾元素
linsert key before|after pivot value: (效率不高)
在pivot 元素前或后插入value 这个元素
rpoplpush resource destinaation: 将链表中的尾部元素弹出并添加到另外一个链
表头部可以同一个链表循环操作
rpoprpush …
lpoplpush …
lpoprpush …
4: redis set 命令
sadd set1 a b c:添加元素
smembers set1: 查看set1的所有元素
srem set1 a b: 从set1中删除元素a b
sismember set1 a: 判断a是否在set集合里面
sdiff set1 set2: (差集)哪些元素属于set1,但是不属于set2
sinter set1 set2: (交集)哪些原属属于set1,又属于set2
sunion set1 set2: (并集)哪些元素属于set1和set2
scard key: 获取set中成员的数量(查看会员数量,或者用户数量)
srandmemger key: 随机返回set中的一个成员
sdiffstore set3 set1 set2: 把set1,set2 的差集结果存放到set3
sinterstore set3 set1 set2: …
sunionstore set3 set1 set2: 把set1,set2的并集存储到set3
5: redis sortedset 命令
zadd key 5000 xiaoming 1000 xiaohong 500 xiaozhang: 添加元素,顺序默认从小到大
zscore key member: 获取某个元素的分数
zcard key: 获取集合中的成员数量
zrem key xiaoming xiaohong: 从集合中删除元素
zrange key start end[withscores]: 范围查找,获取集合中脚标为start-end的
成员,[withscore] 参数表明返回的成员包含其分数
zrange key start end withscores: 带分数信息查询成员变量
zrevrange key start end[withscores]: 倒叙查找,就是从大到小
zremrangebyrank key start stop: 按照排名范围删除元素,也就是利用脚标
zremrangebyscore key min max: 按照分数范围来删除元素
zrangebyscore key min max[withscores]: 按分数显示
zrangebyscore key min max[withscores] limit offset count: 按分数显示多少个
zincrby key increment member: 设置指定成员的增加的分数, 返回更改后的分数
zcount key min max: 获取分数在 [min,max] 之间的成员数量
zrank key member: 返回成员在集合中的排名, 索引从小到大
zrevrank key member: 返回成员在集合中的排名, 索引从大到小
6: redis 通用命令
keys pattern:获取所有键值对
keys *: 通配符:
*:表示任意0个或多个字符
?:一个问号表示一个字符
del key1 key2…:删除指定的键值对
exists key: 判断该key是否存在,1 代表存在 0 代表不存在
renname key newkey: 重命名key值
type key: 获取指定的key的类型,该命令将以字符串的格式返回。返回的字符串为
string,hash,list,set和zset
expire key: 设置key的过期(生存)时间
ttl key: 获取该key所剩的超时时间 -2表示已经过期,会被删除
-1表示永久存在
7: 消息订阅与发布
subscribe channel: 订阅频道
psubscribe channel*:批量订阅频道
publish channel content: 在指定的频道中发布消息,如:publish mychat ‘hello ant’
8: 多数据库
a: redis 也是有数据库的,安装的过程中redis已经提前给我们创建好了;
redis 默认有16个数据库:0、1、2、3…15
b: 在redis上所做的所有数据操作,都是默认在0号数据库上;
数据库和数据库之间不能共享键值对;
c: 切换数据库:
select 数据库名;
d: 把某个键值对进行数据库移植:
move key 1:将当前的key移植到1号数据库
e: 数据库的清空:
flushdb: 清空当前数据库的数据
flushall: 清空所有数据的数据
9: redis批量操作-事务(说白了就是批量操作)
a: redis-事务: 目的是为了进行redis语句的批量化执行;
multi:开启事务用于标记事务的开始,其后执行的命令都将被存入命令队列,
直到执行exec时,这些命令才会被原子的执行,类似于关系型数据库中的:
begin transaction
exec: 提交事务,类似于关系型数据库中的:commit
discard: 事务回滚,类似于关系型数据库中的:rollback
10: 服务器命令
ping: 测试链接是否存活 存活 返回PONG
echo: 在命令行打印一些内容(几乎不用)
select: 切换数据库
quit: 退出客户端
dbsize: 返回当前数据库中 key 的数目
info: 查看redis信息
11: redis的持久化
持久化: 把数据保存到硬盘上
关系型数据库mysql持久化: 任何增删改查,都是在硬盘上的操作,断电以后,硬盘上
的数据还是存在;
非关系型数据库redis:默认情况下,所有的增删改,数据都是在内存中进行操作。断电后
reidis部分数据丢失,丢失的那部分是保存在内存中的数据;
redis 持久化策略:
a: RDB(默认持久化策略): RDB 相当于照快照,保存的是一种态。
优点:1-快照保存数据速度非常快,还原速度也是极快;
2-适用于灾难备份;(rd可以恢复数据)
缺点: 1-RDB符合要求就会照快照,例如服务器关闭、key满足一定条件。随时启动,
占用资源(这个占有是突然的),小内存机器不适合使用,很可能内存不足导致
服务器关闭
RDB什么时候照快照?
1-服务器关闭时,会照一次快照
2-key满足一定条件时,会照一次快照,那么当可以满足什么条件时时打快照呢? 看redis.con配置:
save 900 1: 每900秒(15分钟)至少有一个key发生变化,则dump内存
快照;
save 300 10: 每300秒(5分钟)至少10个key发生变化,则dump内存
快照;
save 60 10000:每60秒(1分钟)至少有10000个key发生变化,则dump
内存快照;
例如1: 12:00-12:15-有一个key发生变化(key数据添加、修改、删除),
在12:15就照一次快照;
12:00-12:15-没有任何可以发生变化,则不会照快照;
b: AOF: 适用于内存比较小的计算机,只会保存到值key变化的
每秒同步(默认):每秒进行一次AOF保存数据(安全性低,比较节省系统资源)
每修改同步:key修改同步(增、删、改),就进行AOF保存数据(比较安全,但
是极为浪费效率)不同步:不进行任何持久化操作(不安全)
优点:1-持续性,占有极少量的内存资源;
缺点:1-日志文件会特别大,不适用灾难恢复