redis入门指南中命令总结
redis 和memcached的不同
redis 可以持久化,放在硬盘中
memcached 只能放在内存中,程序退出后,内存中的数据就会丢失了。
redis 是作为数据库开发的。
redis 是单线程, memcache 是多线程,所以在多核系统中 memcache性能好,需要更高的数据类型和持久化 redis会好些
1,keys *,?,[a-b]
keys * 会遍历redis中所有的建 影响性能,所以开发环境中不要用
2,判断一个建是否存在
exists bar 存在返回1 否则返回0
3,删除 del
4,获取key类型
type key
5,php中的redis
6, 递增数字
incr num
7 append 向尾部追加 相当于set key value 返回的是追加后总的字符串长度
8, strlen key 返回字符串的长度
9, mget mset 可以设置多个
10 hash表
hget hset hmset hmget 设置多个字段
hgetall 获取所有的
语言将hgetAll 封装到对象中
判断是否存在哈希表, hexists key field1 1代表有,0代表没
hsetnx : 如果不存在进行赋值,如果存在不进行任何操作
hincrby: 累计加n, 没有hincr 可以通过 hincrby key field 1 来实现
只获取字段值 hkeys ; 获取值 hvals
hlen key : 获取字段数量
11 列表(list)类型
lpush rpush 向左边和右边添加元素
lpop rpop
llen key 获取列表的长度
lrange : 获取列表片段, lpop rpop 会删除 lrange不会删除 存的是 3 2 1
lrange key 0 -1 会展示所有的列表
ltrim 是删除片段
lrem key count value count = 0 删除所有的 value 如果count >0 从左边删除 count个 value 如果 count < 0 从右边删除count个 value
像操作数组一样 操作列表:
lindex key index 显示
lset key index value
linsert: 制定位置插入
rpoplpush : 从一个list 到另一个list 一个个的转
12 集合类型 (set) hash table实现的
和列表相比:集合类型具有唯一性,是无序的。列表不是唯一的,是有序的。
sadd , srem 增加删除,可以增加或删除多个
smembers key 获取
sismember key value 存在返回1 不存在返回0
集合运算:
sdiff (支持多个key): sdiff A B 差集 属于A ,但不属于B
sinter 取交集
sunion
scard:获得集合的个数
srandmember seta count 随机获取一个数 也可以指定多个,count >0 不重复,< 0 可以重复的 count个数
spop: 弹出一个元素
12, 有序集合 sorted set (用散列表和跳跃表实现 所以读取位于中间的也很快)
zadd key score value socre value
zscore key value 查看分数
获得排名在某个范围的元素列表:zrange key start stop
带有分数的:zrange key 0 -1 withscores
获取指定分数之间的:zrangebyscore key startScore endScore
在1到4之间 但是不包含4 用 zrangebyscore treeset 1 (4 -inf +inf 代表正无穷和负无穷
增加某个元素的分数:zincrby treeset count member
zcard:获取有序集合个数
获得制定分数范围内的元素个数 zcount key min max
删除一个或多个元素: zrem key member
按照分数范围删除元素:zremrangebyscore key min max
获取元素的排名:zrank key member zrevrank key member 从0开始
13 redis的事务 (没有提供回滚功能)
multi
exec
14 watch : 监控
15 redis 失效 expire key 秒; ttl 查看还有多少秒失效,如果返回-1 说明还没有该key或是永久存在
16 取消失效 persist a
17 可以用sort 命令进行排序
18 队列 可以用列表实现 rpop 可以用brpop 命令会一直阻塞住连接,直到新元素加入。
brpop queue 0 :代表没有阻塞时间,如果没有新元素加入就一直阻塞。开启两个redis实例。 select 1 选择第1个
队列优先级:brpop key1 key2 key3 ; 按照从左到由的顺序取
19 发布/订阅模式
publish:发布 返回0 说明没有订阅的
subscribe: 订阅 返回三个值的含义不同。 1 订阅成功 2:代表订阅的频道 3:代表当前频道的 订阅人数
当publish 一个新的内容后,另个redis实例 自动出现订阅的
unsubscribe :可以取消订阅
psubscribe : 可以订阅一定规则的
punsubscribe : 是取消订阅
20 ,管道
客户端和redis 采用TCP协议连接,管道会更快 以下是php中用到的管道,速度提升不少
21,内部编码 object encoding key
22 redis 可以重新命名的
23 查看redis 的信息 info
24 获取耗时日志的命令 slowlog get
25 命令监控 monitor 此命令非常影响性能,会降低redis将近一半的负载能力