Redis入门基本操作

来源:互联网 发布:java记事本程序设计 编辑:程序博客网 时间:2024/05/16 14:17

NoSql的概述
Not only Sql 非关系型数据库
为什么要使用NoSql
  高并发读写
  海量数据的高效率存储和访问
  高可扩展性和高可用性

主流的有Redis mongoDB
NoSql数据库的四大分类
键值存储   redis   优势:内容缓存,快速查询,  劣势,存储的数据缺少结构化
列存储
文档数据库   mongoDB,优势:数据格式要求不严格,劣势:查询性能不是特别高,缺少统一的查询语法
图形数据库   

NoSql特点
很容易扩展,数据之间是没有关系的,大数量和高性能的读写是很灵活的,灵活的数据模型,高可用,方便组织框架

Redis的概述
一款C语言开发的,开源的,高性能的键值对数据库,通过提供多种键值数据类型
支持的类型有:
  字符串类型
  列表类型
  有序集合类型
  散列类型
  集合类型

应用的场景
缓存   查询
聊天室,秒杀,任务队列
网站访问统计
数据过期处理
分布式集群架构中的session分离

Redis的安装和使用
建议安装在Linux环境下
虚拟机:VMware10.0.2
Linux系统:CentOS-6.5
SSH客户端:SecureCRT 7.3,SecureFX 7.3

编译C语言要安装gcc
命令:yum install gcc-c++
上传redis压缩包到Linux服务器上
tar -zxvf redis.rar
到redis目录下,make,如果没有安装gcc就会出错
make PREFIX=/usr/local/redis install
安装完后,在/usr/local/redis有几个可执行文件 
redis-benchmark    一个性能测试的工具
redis-check-aof     AOF的修复工具
redis-check-dump DB文件检查的工具
redis-cli                 命令行客户端
redis-sentinel-redis-server
redis-server   redis服务器的启动命令
需要将redis.conf文件拷贝到/usr/local/redis下
启动命令:redis-server
修改配置文件:vim redis.conf
daemonize yes
./bin/redis-server ./redis.conf  重新启动并重新加载配置文件
通过查找命令:ps -ef | grep -i redis
关闭命令:./bin/redis-cli shutdown
set name alvin
get name
keys *  查找数据库中的key
del name 删除key


Jedis的入门
通过程序向redis里面写入数据,或者从redis里面获取数据
redis连接的一个基本操作
Jedis是redis官方首选的java客户端开发包
commons-pool2-2.3.jar
jedis-2.7.0.jar
打开linux防火墙的一个设置
vim /etc/sysconfig/iptables
打开6379端口
代码:参照代码
package com.alvin.jedis;import org.junit.Test;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;public class JedisDemo01 {      @Test      public void demo01() {            //设置IP地址和端口            Jedis jedis = new Jedis("127.0.0.1", 6379);            //保存数据            jedis.set("name", "alvinin");            //获取数据            String name = jedis.get("name");            System.out.println(name);            //释放资源            jedis.close();      }            @Test      public void demo02() {            //获取连接池的配置对象            JedisPoolConfig jedisConfig = new JedisPoolConfig();            //设置最大连接数啊            jedisConfig.setMaxTotal(30);            //设置最大空闲连接数            jedisConfig.setMaxIdle(10);                        //获取连接池            JedisPool jedisPool = new JedisPool(jedisConfig, "127.0.0.1", 6379);            //获得核心对象            Jedis jedis = null;            try {                  jedis = jedisPool.getResource();                  jedis.set("name", "monkey");                  String name = jedis.get("name");                  System.out.println(name);            }catch(Exception e) {                  e.printStackTrace();            }finally{                  if(jedis != null ){                        jedis.close();                  }                  if(jedisPool != null) {                        jedisPool.close();                  }            }      }}

Redis的数据类型
字符串String, 字符串列表list,有序字符串集合sorted set
哈希hash,字符串集合set
常用的是String 和 hash

key定义的注意点
不要太长
不要过短
统一的命名规范

存储String
二进制安全的,存入和读取的数据相同
Value最多可以容纳的数据长度是512M
常用命令
赋值,取值,删除,扩展命令
字符串的基本操作
get,set,getset,incr,decr,incrby,decrby,append

哈希的基本操作
String key 和String value的map容器
每个hash可以存储非常非常多的键值对
赋值,取值,删除,增加数字,自学命令
hset myhash username jack
hset myhash age 18
hmset myhash2 username rose age 20
hget myhash username
hmget myhash username age
hgetall myhash
hdel myhash2 username age
del myhash2
hincrby  myhash age 5
hexists myhash username 
hlen myhash
hkeys myhash
hvals myhash

存储list
按照插入顺序进行排序的一个字符串列表,和普通链表是一样的
ArrayList使用数组的方式
LinkedList使用双向链表的方式
双向链表中增加数据
双向链表中删除数据
两端添加,两端弹出,查看列表,获取列表元素个个数,扩展命令
lpush mylist a b c 
lpush mylist 1 2 3 
rpush mylist2 a b c 
rpush mylist2 1 2 3 
lrange mylist 0 5
lrange mylist2 0 -1
lpop mylist
rpop mylist2
llen mylist
lpushx mylist x
rpush mylist2 x
lrem mylist3 2 3 
lrem mylist3 -2 1
lrem mylist3 0 2
lset mylist 3 mmm
linsert mylist4 before b 11
linsert mylist4 after b 22
rpoplpush mylist5 mylist6

存储set
没有排序的集合
和list不同的是,set集合不允许出现重复的数据
添加、删除命令,获得集合中的元素,集合中的差集运算,集合中的交集运算,集合中的并集运算,扩展命令
sadd myset a b c
sadd myset 1 2 3
srem myset 1 2
smembers myset
sismember myset a
sdiff mya1 myb1
sinter mya2 myb2
sunion mya3 myb3
scard myset
srandmember myset
sdiffstore my1 mya1 myb1
sinterstore my2 mya2 myb2
sunionstore my3 mya3 myb3

存储sorted set
sorted set 中的成员在集合中的位置是有序的
添加、删除元素,获得元素,范围查询,扩展命令
zadd mysort 70 zs 80 ls 90 ww
zadd mysort 100 zs
zadd mysort 60 tom 
zscore mysort zs
zcard mysort
zrem mysort tom ww
zrange mysort 0 -1
zrange mysort 0 -1 withscores
zrevrange mysort 0 -1 withscores
zremrangebyrank mysort 0 4
zremrangebyscore mysort 80 100
zrangebyscore mysort 0 100 withscores limit 0 2
zincrby mysort 3 ls
zcount mysort 80 90


Keys的通用操作
keys *
keys my?
del my1 my2 my3
exists my1
rename comoany newcompany
expire newcompany 1000
ttl newcompany
type newcompany 
type mylist

Redis的特性
多数据库
select 1
move myset 1
支持事务
multi
exec
discard

Redis的持久化
所有的数据都存储在内存当中
从内存当中同步到硬盘上,这个操作称之为持久化操作
持久化的方式
RDB方式,在规定的时间内将内存中的数据写入磁盘
AOF方式,将以日志的方式,每次重启,都会读取日志,重新构建数据库
无持久化,只使用缓存功能




原创粉丝点击