Redis
Posted 耍流氓的兔兔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis相关的知识,希望对你有一定的参考价值。
什么是Redis:
Redis是C语言开发的开源的高性能键值对(key-value)数据库,支持String类型、map散列类型、list列表类型、set集合类型、sortedset有序集合类型
参考链接:http://www.runoob.com/redis/redis-tutorial.html
什么是NoSql:
非关系型数据库,它的全名Not only sql
解决高并发、高可用、高可扩展,大数据存储等一系列问题
高并发:双十一的高并发
高可用:一台机器宕机,不能影响服务的提供,另一台机器必须顶替上
高可扩展:随时扩展新的需求
NoSql分类: (1)MongoDB:文档型数据库,日志 (2)HBase:列存储数据库,分布式文件系统,大数据存储,例如用户的购买行为 (3)redis:键值存储数据库,应用于系统缓存,如首页展示的商品列表 (4)Neo4J、InfoGrid:图形数据库,社交网络常用
Redis应用场景:
缓存(数据查询、短连接、新闻内容、商品内容)
分布式集群架构中的session分离(单点登录的用户token串)
任务队列。(秒杀、抢购、12306等等)
聊天室的在线好友列表
应用排行榜
网站访问统计
数据过期处理
数据类型String:
set key value 赋值
get key 取值
getset key value 取值并赋值
mset key value [key value ...] 设置多个键值
mget key [key ...] 获取多个键值
del key 删除
incr key 让当前键值递增,并返回递增后的值
incrby key increment 增加指定的整数
decr key 递减
decrby key decrement 减少指定的整数
append key value 向键值的末尾追加value,如果键不存在则将该键的值设置为value
strlen key 返回键值的长度,如果键不存在则返回0
数据类型hash:
hset 不区分插入和更新操作,当执行插入操作hset命令返回1,当执行更新操作时返回0
hset key field value 一次设置一个字段的值
hmset key field value [field value ...] 一次设置多个字段的值
hsetnx key field value 当字段不存在时赋值,类似hset,区别在于如果字段存在,不执行任何操作
hget key field 一次获取一个字段的值
hmget key field field [field ...] 一次获取多个字段的值
hgetall key 获取所有字段的值
hdel key field [field ...] 可以删除一个或多个字段,返回值是被删掉的字段个数
hincrby key field increment 增加
hexists key field 判断字段是否存在
hkeys key 只获取字段名
hvals key 只获取字段值
hlen key 获取字段数量
数据类型list:
ArrayList和LinkedList的区别:
Arraylist是使用数组来存储数据,特点:查询快、增删慢
Linkedlist是使用双向链表存储数据,特点:增删快、查询慢,但是查询链表两端的数据也很快
Redis的list可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的某一个片段
lpush key value [value ...] 向列表左边增加元素
rpush key value [value ...] 向列表右边增加元素
lrange key start stop 获取列表某一片段,将返回start、stop之间的元素(包含两端的元素),索引从0开始,索引可以为负数
lpop key 从列表左边弹出一个元素,并返回被移除的值
rpop key
llen key 获取列表中元素的个数
lrem key count value 删除列表中前count个值为value的元素,返回实际删除的元素个数
count > 0 从左边开始删除
count < 0 从右边开始删除
count = 0 删除所有值为value的元素
lindex key index 获得指定索引的元素值
lset key index value 设置指定索引的元素值
lreim key start stop 保留指定片段
linsert key before | after pivot value 在列表中从左到右查找pivot的元素,然后根据第二个参数是before还是after来决定将value插入到该元素的前面还是后面
rpoplpush source destination 将元素从一个列表转移到另一个列表中
数据类型set:
sadd key member [member ...] 增加元素,无法重复添加
srem key member [member ...] 删除元素
smembers key 获得集合中所有元素
sismember key member 判断元素是否在集合中
sdiff key [key ...] A-B 求A和B的差集
sinter key [key ...] A||B 求A和B的交集
sunion key [key ...] A+B 求A和B的并集
scard key 获得集合中元素的个数
spop key 从集合中弹出一个元素,集合无序,会随机选择一个元素弹出
数据类型sortedSet
sortedset是有序集合,可排序,但是唯一,和Sets相比,Sorted Sets增加了一个权重参数score,使得集合中的元素能够按score进行有序排列
zadd key score member [score member ...] 向有序集合中加入一个元素和该元素的权重,如果该元素已经存在则会覆盖
zscore key member 获取元素的权重
zrem key member [member ...] 移除有序集key的一个或多个成员,不存在的成员将会被忽略
zrange key start stop [withscores] 获得排名在某个范围内的元素列表
zrevrange key start stop [withscores] 按照排名倒序获得元素
zrank key member 获取元素排名
zrevrage key member 倒序
zrangebyscore key min max [withscores] [limit pooset count] 获得指定分数范围内的元素
zincrby key increment member 增加某个元素的分数
zcard key 获得集合中元素的数量
zcount key min max 获得指定分数范围内的元素个数
zremrangebyrank key start stop 按照排名范围删除元素
zremrangebyscore key min max 按照分数范围删除元素
数据类型keys:
keys list* 返回满足list*的所有key
exists key 判断key是否存在
del key 删除一个key
rename key newkey 重命名key
type value 判断值的类型
redis在实际使用过程中更多的用作缓存,然而缓存的数据一般都是需要设置生存时间的,即:到期后数据销毁。
EXPIRE key seconds 设置key的生存时间(单位:秒)key在多少秒后会自动删除
TTL key 查看key生于的生存时间
PERSIST key 清除生存时间
PEXPIRE key milliseconds 生存时间设置单位为:毫秒
以上是关于Redis的主要内容,如果未能解决你的问题,请参考以下文章