您的位置:首页 > 数据库 > Redis

Redis在Linux上的安装、常用命令以及Jedis

2016-12-20 01:09 573 查看

NoSQL

什么是NoSQL:

NoSQL(NoSQL=Not Only SQL),意思是不仅仅是SQL,是一项全新的数据库理念,泛指非关系型数据库

主流的是关系型数据库:

Oracle、DB2、Sql Server、Mysql/MariaDB

关系型数据库的三大范式:

1、必须标准的二维表,列不可再分

2、每条记录必须有唯一标识(主键)

3、引用别的表的数据时,只能引用那个表的主键字段(外键)

NoSQL (非关系型数据库)的作用:

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

NoSQL特点

1.易扩展

2.大数据量

3.灵活的数据模型

4.高可用

NoSQL数据库的四大分类:

1、键值存储数据库

2、列存储数据库

3、文档型数据库

4、图形数据库

Redis

什么是Redis:

Redis是用C语言开发的一个开源的高性能键值对数据库。

Redis支持的键值数据类型:

1.字符串类型

2.散列表类型

3.列表类型

4.集合类型

5.有序集合类型

Redis的应用场景:

缓存(数据查询、短连接、新闻内容、商品内容等等)。

聊天室的在线好友

任务队列(秒杀、抢购)

应用排行榜

网站访问统计

数据过期处理

分布式集群架构中的session分离

Redis的安装

一、把安装包复制到Linux系统中

二、解压缩

三、进入解压缩之后的目录中,看到Makefile文件,这是一个编译指导书

四、执行make命令进行编译

五、如果提示命令:gcc找不到,说明用于编译的工具GCC没有安装,所以要挂CentOS的安装盘,安装gcc-4.4.7

六、rpm -ivh gcc-4.4.7xxx

依赖包 cloog-ppl ->ppl-0.10.2

cpp-4 -> mpfr-2.4

Redis的配置和启动

1、前端启动模式

命令:/usr/local/redis/bin/redis-server

缺点:启动完成后,不能再进行其他操作。

2、后端启动模式

修改redis.conf配置文件,,daemonize yes以后端模式启动

命令:

修改配置文件按: vim/usr/local/redis/redis.conf

启动: cd/usr/local/redis/

./bin/redis-server ./redis.conf

redis 默认端口6379,可通过当前服务进行查看:

ps -ef | grep -i redis

Redis停止

强制结束程序:

kill -9 31465 #pid 需要通过 ps aux | grep -i redis 进行查询

正确停止Redis的方式:

cd /usr/local/redis

./bin/redis-cli shutdown

Redis的使用

1、连接客户端

redis-cli -h ip地址 -p 端口

默认ip和端口情况下:

./bin/redis-cli

2、向Redis发送命令

2.1 ping :测试客户端与Redis连接是否正常

2.2 set/get :使用set和get可以向redis设置数据、获取数据

2.3 del :删除指定key的内容

Jedis入门

1、Jedis介绍

redis不仅是使用命令来操作,现在主流的语言都有客户端支持,在官方网站里列一些java的客户端,有Jedis、Redisson、Jredis、JDBC-Redis等,其中官方推荐使用Jedis和Redisson。

2、java连接Redis

2.1导入jar包

4000
commons-pool2-2.3.jar

jedis-2.7.0.jar

2.2单实例连接

public void testJedisSingle(){

//1、设置ip地址和端口

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

//2、设置数据

jedis.set(“name”,”james”);

//3、获取数据

String name = jedis.get(“name”);

System.out.println(name);

//4、释放资源

jedis.close();

}

2.3连接超时

设置linux防火墙

vi /ect/sysconfig/iptables

service iptables restart

2.4连接池连接

//1 获得连接池配置对象,设置配置项

JedisPoolConfig config = new JedisPoolConfig();

//1.1 设置最大连接数

confing.setMaxTotal(20);

//1.2 设置最大空闲连接数

config.setMaxIdle(10);

//2 获得连接池

JedisPool jedisPool = new JedisPool(config,”192.168l204.129”(ip地址),6329);

//3 获得核心对象

Jedis jedis = null;

try{

jedis = jedisPool.getResource();

//4 设置数据

jedis.set(“name”,”jack”);

//5 获得数据

String name = jedis.get(“name”);

System.out.println(name);

}catch(){

e.printStackTrace();

}finally{

if(jedis != null){

jedis.close();

}

//虚拟机关闭,释放pool资源
if(jedisPool != null){
jedisPool.close();
}


}

连接池:

1、创建一个配置文件

2、设置配置信息

3、使用配置对象创建连接池对象

4、从连接池中取得Jedis对象

5、通过Jedis操作Redis

6、关闭Jedis

Redis的数据结构

redis是一种高级的key-value的存储系统,value支持五种数据类型:

1.String

2.hash

3.list

4.set

5.sortedset

key的定义注意点:

1.key不要太长,最好不要超过1024个字节

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

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

String类型

在Redis中字符串类型的value最多可以容纳的数据长度是512M。

常用命令

赋值:set key value

取值:get key

先获取key,然后再设置key:getset key value

删除:del key

数值递增(value可以转成整形):incr key

数值递减(value可以转成整形):decr key

将指定的key的value原子性增加increment:incrby key increment

将指定的key的value原子性减少increment:decrby key decrement

拼凑字符串:append key value

Hash类型

Hash算法:散列算法.用Hash算法得到的值当作原始值的索引和内存地址。

该类型非常适合于存储值对象的信息。

常用命令:

赋值:hset key field value

设置key中的多个filed/value:hmset key field value[field2 value2…]

取值:hmget key fileds

获取key中的所有filed-value :hgetall key

删除:hdel key field [field]

删除整个list:del key

设置key中filed的值增加increment:hincrby key field increment

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

获取key包含的filed的数量:hlen key

获取所有的key:hkeys key

获取所有的value:hvals key

List类型

List类型是按照插入顺序排序的字符串链表,双向循环链表

常用命令:

在指定的key所关联的list的头部插入所有的values:lpush key values[value1 value2…]

在该list的尾部添加元素:rpush key values[value1、value2 …]

获取链表中从start到end的元素的值(-1则表示链表尾部的元素,-2表示倒数第二个):lrange key start end

返回并弹出指定的key关联的链表中的第一个元素,如果key不存在,返回nil:lpop key

从尾部弹出元素:rpop key

返回指定的key关联的链表中的元素的数量:llen key

向关联的list的头部插入value:lpushx key value

在该list的尾部添加元素:rpushx key value

删除count个值为value的元素:lrem key count value

设置链表中的index的脚标的元素值,0代表链表的头元素,-1代表链表的尾元素:lset key index value

在pivot元素前或或后插入value这个元素:linsert key before|after pivot value

将链表中的尾部元素弹出并添加到头部:rpoplpush resource destination

存储set

set类型看做没有排序的字符集合,不允许出现重复的元素

常用命令:

向set中添加数据:sadd key values[value1、value2…]

删除set中指定的成员:srem key members[member1、member2]

获取set中所有的成员:smembers key

判断参数中指定的成员是否在该set中(1表示存在,0表示不存在):sismember key member

返回差集:sdiff key1 key2 …;

返回交集: sinter key1 key2 key3 …;

返回并集:sunion key1 key2 key3…;

获取set中成员的数量:scard key

随机返回set中的一个成员: srandmember key

将 key1、key2相差的成员存储在destination上:sdiffstore destionation key1 key2…;

将返回的交集存储在destionation上:sinterstore destination key[key…];

将返回的并集存储在destination上:sunionstore destination key[key…];

Redis特性

多数据库

redis实例最高可提供16个数据库,下标从0到15

newkey 数据库迁移

事务

redis事务特征

multi:开始事务

exec:提交事务

discard:回滚事务

RDB:

总结:

Redis:NoSQL数据库:not only sql

键值对型的数据库

数据类型:

1、String:一个可以对应一个普通的字符串,如果值可以转换为整数,则此值可以做增和减的操作 incr/decr/incrby/decrby

2、Hash:一个key对应多个键值对,相当于是一个key之中存储了一个对象(多个键值对相当于对象的属性和值)

3、List:双向循环链表,可以把它视为一个队列,是一个可以两端都进行操作的队列

插入元素和删除元素、遍历效率高

查询效率低

4、Set:集合,元素不可重复,可以进行差集、交集、并集的操作

5、SortedSet:可排序的集合,集合中的元素具有一个分值(score,是在元素保存到集合时给出的)排序时,依据此分值进行排序,降序的命令中有rev

如何用Java程序操作Redis

使用的Jedis.jar

一、创建核心对象:new Jedis(”Redis服务器的IP”,端口号默认6379)

二、jedis. set/get/del/hset

三、jedis close()

事务:

multi:开始事务

exec:提交事务

discard:回滚事务

多数据库:

Redis一共有16个数据库,默认是0,如果要切换使用命令,select 数据库编号

持久化:

1、RDB:设置指定的时间和时间内的修改次数进行备份

2、AOF:每秒或每次操作备份(append)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: