笔者最初接触Redis是由于了解了一些nosql方面的知识,以为nosql是一个颇有意思的方面。像其中的mongodb,redis等等。当初也没有深刻的去了解Redis,直到本身前段时间在写一个web项目的时候须要用到缓存来进行性能优化我才仔细的来学习Redis。下面我就来讲说我本身在学习Redis过程当中的一些心得。web
Redis是一个nosql数据库,它采用字典结构以键值对的形式将数据所有存储在内存中因此它读写的速度很快,所以不少项目用Redis作缓存用,我也是基于这个想法来学习Redis的。 Redis支持的数据类型分别是字符串(string)、散列(hash)、列表(list)、集合(set)、有序集合(sorted set)这五种。接下来我将仔细介绍下这几种数据结构的用法和对应的命令。redis
字符串类型:字符串类型是Redis中最基本的数据类型,是其余四种数据类型的基础。它能存储任何形式的字符串(二进制数据、Json对象、图片等),它的最大数据容量是512MB。sql
经常使用命令:mongodb
set key value //赋值数据库
get key //取值缓存
keys * //查看全部的键性能优化
exists key //判断某个键是否存在数据结构
del key //删除一个键nosql
type key //获取键的类型性能
incr/decr key //给键增长/减小一
incrby/decrby key increment/decrement //给键增长/减小一个整数
incrbyfloat key increment //增长浮点数
strlen key //返回键的长度
mset/mget //同时设置或者获取多个值
散列类型:散列类型的键值是一种字典结构,存储了字段和字段值的映射。可是字段值只能是字符串,不支持其余数据类型(Redis的其余数据类型也都不支持嵌套,只能是字符串。)。
经常使用命令:
hset key field value //赋值。不区分插入和更新操做,当键不存在是会自动创建。
hget key field //取值
hgetall key //取出全部的值
hexists key field //判断字段是否存在
hsetnx key field value //字段不存在时便赋值
hincrby key field increment //增长指定的数字,没有自增
hdel key field //删除一个或者多个字段,返回被删除的个数
hkeys key //只获取字段名
hvals key //只获取字段值
hlen key //只获取字段数量
列表类型:列表是个有序的字符串,向两端添加或者删除元素。它是使用双向链表实现的。
经常使用命令:
lpush/rpush list value //向左/右增长元素
lpop/rpop list //从左/右弹出元素
llen list //获列表的元素个数
lrange list start stop //得到列表片断(左边索引为0,若是为负则从右边开始) lrange key -1 0 则为获取全部的元素
lrem list count value //删除列表中前count个值为value的元素
rpoplpush oldlist newlist //将原列表的值放入新列表
集合类型:集合中的元素都是不一样的,并且没有顺序。它能够求交集、并集、差集。
经常使用命令:
sadd set member //增长一个元素给集合(没有则建立)
srem set member //删除一个或多个元素
smembers set //返回集合中全部的元素
sismember set member //判断元素是否存在于集合中
sdiff setA setB //求差集
sinter setA setB //求交集
sunion setA setB //求并集
sdiffstore destination setA setB //将求到的差集结果保存在destination中
srandmember set num //随机获取一个或多个元素(看后面加的参数)
spop set //从集合中随机弹出一个元素
有序集合:和集合相比给每一个元素都关联了个分数。咱们除了能够进行集合的操做外,还能够获取分数最高或者最低的几个元素。
经常使用命令:
zadd key score member //加入元素和对应分数,支持整数和双精度浮点,若是存在则修改。其中+inf和-inf表明正负无穷大
zscore key member //得到元素的分数
zrange/zrevrange key start stop //按分数从顺序/逆序排序
zrangebyscore key min (max //返回min和max之间的数左括号表明不包含
zincrby key increment member //给元素增长值
zcount key min max //获取指定范围元素的个数
zcard key //获取集合中元素的数量
zrem key member //删除元素
zremrangebyrank key start stop //按排名范围删除元素
zremrangebyscore key min max //删除分数范围值
zrank key member //元素按分数大小排名
zrevrank key member //从大到小排名
结语:我的学习总结有遗漏错误的地方还但愿你们留言斧正,多多交流一块儿学习。