一、key的操作
1、注:在redis里面,“\”和空格不能作为key的组成内容。
2、相关指令:
exists key | 测试指定key是否存在 |
del key1 key2... | 删除指定key |
type key | 返回指定key的value类型 |
keys pattern | 返回匹配指定模式的所有key,pattern是通配符 |
rename oldkey newkey | 修改key的名字 |
dbsize | 返回当前数据库的key数量 |
expire key seconds | 为key指定过期时间 |
ttl key | 返回key的剩余过期秒数 |
select db-index | 选择数据库 |
move key db-index | 将key从当前数据库移动到指定数据库 |
flushdb | 删除当前数据库中的所有key |
flushall | 删除所有的数据库的所有key |
二、String类型的操作
1、注:
①String是redis最基本的类型
②redis的string可以包含任何数据,包括jpg图片或者序列化的对象
③单个value的最大上线是1G
④如果只用String类型,redis就可以被看作是加上持久化特性的memcache
2、相关指令:
set key value | 设置key对应的值为String类型的value |
mset key1 value2...keyN valueN... | 一次性设置多个key的值 |
mget key1 key2...keyN... | 一次获取多个key的值 |
incr key | 对key的值作加加操作,并返回新值。 注意:如果是操作新key:创建该key并加1,其值为1;如果是操作已有key:其值的类型必须为整型 |
decr key | 对key的值作减减操作,并返回新值。 |
incrby key number | 增加指定值,并返回新值 |
decrby key number | 减去指定值,并返回新值 |
append key value | 给指定key的字符串追加value |
substr key start end | 截取指定key的字符串 |
三、list链表类型
1、list类型其实就是一个双向链表。通过push、pop操作从链表的头部或尾部添加删除元素。这使得list既可以用作栈,又可以用作队列。
2、该list链表应用场合:
例如:获得10个最新的登录用户信息
select * from user order by login_time desc limit 5;
以上sql可以实现用户需求,但是数据多的时候,全部数据都要受到影响,对数据库的负载也比较高。必要情况还要给关键字段(如login_time)设置索引,索引也比较耗费系统资源。
如果通过list链表实现以上功能,可以在list链表中只保留最新的5个数据,每进来一个数据就删除一个旧数据。每次就可以从链表中直接获取需要的数据,极大节省各方面的资源消耗。
3、相关指令
lpush key string | 在key对应的list的左边添加字符串元素 |
lpop key | 弹出左部元素,并返回该元素 |
rpush key string | 在key对应的list的右边添加字符串元素 |
rpop key | 弹出右部元素,并返回该元素 |
llen key | 返回list对应的长度,key不存在返回0,key对应的类型不是list返回错误 |
lrange key start end | 返回指定区间的元素 |
ltrim key start end | 截取list,保留指定区间内的元素 |
四、set集合类型
1、注:
①redis的set是string类型的无序集合
②set元素最大可以包含(2的32次方-1)个元素
③set集合类型除了基本的添加删除操作,其他有用的操作还包含取并集、交集、差集。
④每个集合的各个元素不能重复
2、相关指令
sadd key member | 添加一个string元素到set集合中,成功返回1 |
srem key member1 member2... | 从对应key的set中移除元素 |
smove key1 key2 member | 将member从key1对应的set中移动到key2对应的set中 |
scard key | 返回set中的集合个数 |
sismember key member | 判断member是否存在set中 |
sinter key1 key2...keyN | 返回所有给定key的交集 |
sunion key1 key2...keyN | 返回所有给定key的并集 |
sdiff key1 key2...keyN | 返回所有给定Key的差集 |
smembers key | 返回Key对应的set的所有元素,结果是无序的 |
五、Sorted Set排序集合类型
1、注:
①和set一样,Sorted set也是string类型元素的集合
②不同的是每个元素都会关联一个权,通过权值可以有序的获取集合中的元素
③每个集合的各个元素不能重复
2、适用场合:
如获得热门帖子(回复量)信息。
select * from message order by backnum desc;
以上需求可以通过简单sql实现,但是sql语句耗费数据库资源。
3、相关指令:
zadd key score member | 添加元素到集合,元素在集合中存在则更新对应score |
zrem key member | 删除指定元素,1表示成功,如果元素不存在则返回0 |
zincrby key incr member | 按照incr幅度增加对应member的score值,返回score值 |
zrank key member | 返回指定元素在集合中的排名(下标),集合元素是按score从小到大排序的 |
zrevrank key member | 同上,但是集合中的元素是按从大到小排序 |
zrange key start end | 类型lrange操作从集合中去取出指定区间的元素,返回的是有序结果 |
zrevrange key start end | 同上,但是返回的结果是按score逆序的 |
zcard key | 返回集合中元素的个数 |
zcore key element | 返回给定元素对应的score |
zremrangebyrank key min max | 删除集合中排名在给定区间的元素(权值由小到大排序) |
六、hash类型
1、注:
①hash是一个string类型的field和value的映射表
②Hash更容易存储对象,比如在设置用户姓名,年龄,邮箱等属性时,用string需要分别来进行设置存储,通过Hash就可以把属性放到对象中,然后再存储对象,因此相对于string类型,Hash类型存储对象可以占用更少的字节
2、常用指令:
hset key field value | 设置hash field为指定值,如果key不存在,则先创建 |
hmset key field1 value1...fieldN valueN | 同时设置hash的多个field |
hget key field | 获取指定的hash field |
hmget key field1...fieldN | 一次获取多个指定的hash field |
hincrby key field integer | 将指定的hash field加上给定值 |
hexists key field | 判断指定field是否存在 |
hdel key field | 删除指定的hash field |
hlen key | 返回指定hash的field数量 |
hkeys key | 返回hash的所有field |
hvals key | 返回hash的所有value |
hgetall key | 返回hash的所有field和value |