其余技术----Redis入门

Redis

Redis 是一种基于键值对的NoSQL 咱们用它来作数据缓存,减小数据库的压力。咱们能够进入一下网站对redis进行学习
http://try.redis.io/redis

Redis的数据类型

Redis中全部的数据都是以key/value的方式存储的,咱们所说的数据类型指的是value,
在Redis中有一下集中数据类型数据库

  • String
  • Hash
  • List
  • Set
  • ZSet编程

    数据操做

    因为Redis是键值存储。咱们可使用set来进行数据的存储,使用get进行数据的读取,使用 del 对数据进行删除缓存

    set name "test"这里重复使用set能够对这条数据进行修改
    get name => "test"安全

以原子的方式递增存储在给定键上的值

因为redis能够被多个客户端链接使用,若是多个客户端同时修改一个键,若是使用关系型数据库能够进行锁表操做来避免数据的不一致。在Redis中则使用INCR 以原子的方式递增存储在给定键上的数字。数据结构

set count 10
incr count => 11
incr count =>12编程语言

Redis中控制键的存在时间

Redis中能够控制key只存在的一段时间,在这段时间内,这个键是存在的,时间到了后,这个键会自动销毁。咱们可使用EXPIRE和TTL命令来操做这个键何时删除和查看何时删除,TTL命令的返回值是一个整数,-1则是永久存在-2则是不存在。学习

SET lock "lock"
EXPIRE lock 120 //120秒后会自动删除
TTL lock => 113 //113秒后会自动删除
TTL lock => (integer)-2 //lock 被销毁测试

Redis中更复杂的数据结构

Redis中还能够存一些更复杂的数据结构网站

列表

与列表交互的命令有rpush、lpush、llen、lrange、lpop和rpop
rpush:将新值放在列表的末尾
lpush:将新值放在列表的开头
lrange:查询列表的子集,它有两个参数,第一个是指定开始参数起始位置(从0开始)第二个参数是指指定的结束位置(第二个参数若是是-1则表示列出到最后一个)
llen:返回列表的当前长度
lpop:从列表中删除第一个元素并返回它
rpop:从列表中删除最后一个元素并返回它

rpush friends 'alice'
lpush friends 'alice'
lrange friends => "alice" "alice"
llen friends => 2
lpop friends => "alice"
rpop friends => nul

集合

集合相似于列表,可是集合里面不能存储相同的值,而且集合的存储是无序的,使用集合的命令有是sadd、srem、sismember、smembers和sunion
sadd:将给定值添加到集合中
srem:从集合中删除给定值
sismember:测试给定值是否在集合中,若是在,则返回1,若是不在则返回0 *
smemebrs:返回此集合中全部成员的列表
sunion:两个或多个集合组合并返回全部元素的列表

sadd super 'fly'
srem super fly
sismember super 'fly' => 0
sismembers => nul
sadd bired 'fly'
sunion super bired => "fly"

Sorted Sets(有序集合)

集合本生是没有排序的,可是因为它们未排序,所以没法解决许多问题。redis 1.2 中引入了Sorted Sets(有序集合)。有序集合相似于常规集。
zadd: 添加一个有序集合,它有两个参数,第一个是排序的优先级,第二个是值。
zrange:查看一个有序集合某一区间内的值。它也有连个参数,第一个是查找的起始位置,第二个是结束位置,第二个若是是-1则表示查到最后

zadd black 1101 'alice'
zadd black 1111 'jack'
zrange black 0 -1 => "alice" "jack"

Hashes

Redis 中Hashes是字符串字段与字符串值之间的映射,所以它们是表示对象的完整数据类型
hset:redis中hashes中存储数据的命令,它支持一次存储多个hashes数据
hgetall:获取全部保存的数据
hget:获取一个可能存在的字段值
hdel:删除某一个字段
hincrby:以原子的方式递增

hset user name 'john smith' email 'john.simith@example.com'
hgetall user => "name" "john smith" "email" "john.simith@example.com"
hget user name => "john smith"
hset count visits 10
hincrby count visits 1 => 11
hdel count vistis

Redis中的各种型应用场景

类型 简介 特性 场景
String 二进制安全 能够包含任何数据,好比jpg图片或者序列化的对象,一个键最大能存储512M /---
Hash 键值对集合,即编程语言中的Map类型 适合存储对象,而且能够像数据库中update一个属性同样只修改某一项属性值(Memcached中须要取出整个字符串反序列化成对象修改完再序列化存回去) 存储、读取、修改用户属性
List 链表(双向链表) 增删快,提供了操做某一段元素的API 1,最新消息排行等功能(好比朋友圈的时间线) 2,消息队列
Set 哈希表实现,元素不重复 一、添加、删除,查找的复杂度都是O(1) 二、为集合提供了求交集、并集、差集等操做 一、共同好友 二、利用惟一性,统计访问网站的全部独立ip 三、好友推荐时,根据tag求交集,大于某个阈值就能够推荐
Sorted Set 将Set中的元素增长一个权重参数score,元素按score有序排列 数据插入集合时,已经进行自然排序 一、排行榜 二、带权重的消息队列
相关文章
相关标签/搜索