Redis

每日英文:Html

width宽

font字体

color颜色

height高

target目标靶子

table表格

meta变换变化

cellpadding单元格内边距

cellspacing单元格间距

Redis


1.NoSql

Nosql非关系型数据库现在发展飞速,而传统的关系型数据库在应付web2.0网站,特别是超大规模和高并发的sns(Secure Network Server)类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,如:

High performance对数据库高并发读写的需求,数据库并发负载非常高,应付每秒上万次的sql查询还勉强顶得住但应付上万次sql写数据请求,硬盘io已无法承受,普通的bbs网站往往也存在对高并发写请求的要求,如网站的实时统计在线用户状态,记录热门帖子的点击次数,投票计数等,这属于本网站的基本需求.

Huge Storage对海量数据的高效率存储和访问的需求.类似facebook,twitter,Friendfeed这样的sns网站,每天用户产生海量的用户动态,对于关系数据库来说,在一张2.5亿条记录的表里进行sql查询,效率是极其低下的,再如,大型web网站的用户登录系统,如腾讯等动辄以亿计的账号,关系数据库也很难应付.

High Scalability && HighAvailability对数据库的高扩展性和高可用性的需求.在基于web的架构当中,数据库是最难进行横向扩展的,当一个应用系统的用户量和访问量与日俱增的时候,你的数据库却没有办法像web

server和app server那也简单的通过添加更多的硬件和服务节点来扩展性能和负载能力,对于很多需要提供24小时不间断服务的网站来说,对数据库系统进行升级和扩展是非常痛苦的事情,往往需要停机维护和数据迁移.

NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战尤其是大数据应用难题,

NoSQL数据库的四大分类如下:

1.键值(Key-Value)存储数据库

相关产品:Tokyo Cabinet/Tyrant,Redis,Voldemort,Berkeley DB

典型应用:内容缓存,主要用于处理大量数据的高访问负载

数据模型:一系列键值对

优势:快速查询

劣势:存储的数据确实结构化

2.列存储数据库

相关产品:Cassandra,HBase,Riak

典型应用:分布式的文件系统

数据模型:以列式存储,将同一列数据存在一起

优势:查找速度快,可扩展性强,更容易进行分布式扩展

劣势:功能相对局限.

3.文档型数据库

相关产品:CouchDB,

MongoDB

典型应用: Web应用(与key-value类似,value是结构化的)

数据模型:一系列键值对

优势:数据结构要求不严格

劣势:查询性能不高,而且缺乏统一的查询语法

4.图形数据库

相关数据库:Neo4J,InfoGrid,Infinite Graph

典型应用:社交网络

数据模型:图结构

优势:利用图结构相关算法

劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案

NoSQL特点:易扩展,大数据量,高性能,灵活的数据模型,高可用

Redis的应用场景

缓存(数据查询,短链接,新闻内容,商品内容).(最多使用)

聊天室的在线好友列表

任务队列(秒杀,抢购,12306)

应用排行榜

网站访问统计

数据过期处理(可以精确到毫秒)

分布式集群架构中的session

Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型如下:

1.字符串类型(String),

2.散列类型(哈希hash),

3.列表类型(list字符串列表),

4.集合类型(set字符串集合),

5.有序集合类型(sorted set有序字符串集合)

官方测试数据:50个并发执行100000个请求,读的速度是110000次/s,写的速度是81000次/s.数据仅供参考,根据服务器配置会有不同结果

关于key值定义需注意:

1.不要太长,最好不要超过1024个字节,这不仅会消耗内存还会降低查询效率

2.不要太短,太短会降低key的可读性

3.在项目中,key最好有一个统一的命名规范

./bin/redis-service./redis.conf启动配置

./bin/redis-cli连接客户端

ping查看是否连接正常

String类型的KEY

set/get/delkey设置/获取/删除key

keys *查询所有的key

incr keykey自增1当key不存在则创建并初始为0再自增1.但这里的key必须是可以转化为整型的值

decrkeykey自减1.规则同上

incrby keyincrement为key = key+increment

decrby key denum为key=key-denum

append key value字符串拼接

Hash哈希类型的数据

Hset/hget /hdelkeyfieldvalue设置/获取/删除key的field的属性的value值

delkey直接删除key

hincrbykeyfileincrementkey的filed的值增加increment

hexists key field判断指定的key中的filed是否存在

hlenkey获取key所包含的field的数量

hkeyskey获得所有的key

hvalskey获取所有的value

Eclipse中连接Redis .

1.导入jar包:

2.开放端口: /sbin/iptables-I INPUT -p tcp --dport 6379 -j ACCEPT找到相应路径

/etc/rc.d/init.d/iptables save找到相应路径

3.代码实现1:

Jedis

jedis = new Jedis (“IP地址”,6379);

jedis.set(“address”,”bejing”);

System.out.println(jedis.set(“address”));

jedis.close();

代码实现2:连接池

GenericObjectPoolConfigpoolConfig = new GenericObjectPoolConfig();

poolConfig.setMaxTotal(50);

poolConfig.setIdle(10);

JedisPoolpool= new JedisPool(poolConfig,”IP地址”,6379);

jedis.set(“address”,”beijing”);

System.out.println(“address”);

pool.close();

jedis.close();

Linux补充

chmod十进制权限之和文件名更改指定文件的权限

eg:chmod777a.txt权限7:rwx

你可能感兴趣的:(Redis)