17.12.16,web学习第二十七天,还有一年,努力吧青年redis
Redis
1. Nutch是小型搜索引擎。
2. Nosql数据库特点:
3. Nosql数据库分类及产品:
1. Redis:
是用c语言写的开源的高性能键值对数据库。
2. Redis的数据类型:
字符串;散列;列表类型;集合类型;有序集合类型;
1. Redis的应用场景:
缓存:数拒查询,新闻内容,商品内容等。
聊天室的在线好友列表。
任务队列:秒杀,抢购。
应用排行榜。
网站访问统计。
数据过期处理。
分布式集群中的架构分离。(存session)
7. redis在Linux上的安装
1)安装redis编译的c环境,yum install gcc-c++
2)将redis-2.6.16.tar.gz上传到Linux系统中
3)解压到/usr/local下 tar -xvf redis-2.6.16.tar.gz -C /usr/local
4)进入redis-2.6.16目录 使用make命令编译redis
5)在redis-2.6.16目录中 使用make PREFIX=/usr/local/redis install命令安 装 redis到/usr/local/redis中
6)拷贝redis-2.6.16中的redis.conf到安装目录redis中
7)启动redis 在bin下执行命令redis-server redis.conf
8)如需远程连接redis,需配置redis端口6379在linux防火墙中开发
/sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT
/etc/rc.d/init.d/iptables save
这样配置之后窗口不能关闭,窗口关闭默认redis就关闭了。类似Tomcat的 bin下的 startup.bat的方式。
配置后台启动:
修改配置文件配置redis后台启动。
将redis.conf文件中的daemonize从false修改成true表示后台启动
[[email protected] bin]# vim redis.config
daemonize yes 然后保存
[[email protected] bin]# ./redis-server redis.config //后端启动模式
[[email protected] bin]#./redis-cli
查看端口是否启动:ps -ef | grep redis
8. 192.168.233.128 linxu地址。
进入redis开启服务之后 ctrl+c是停止服务。
Redis的启动模式分前端启动模式和后端启动模式。
前台启动模式窗口一关默认关闭服务。
后台启动redis,命令127.0.0.1:6379>exit是退出客户端。
后台启动redis中如何关闭服务: 1)直接杀死进程(不好) 2)[[email protected] bin]# ./redis-cli 127.0.0.1:6379> shutdown |
9. Jedis的使用:(远程访问linux数据库需开放端口)
导包:commons-pool2-2.3.jar+jedis-2.7.0.jar
Jedis j=new Jedis(“192.168.233.128”,6379);
J.set(“”,””);
10. Jeids连接池拿Jedis对象的使用:
Idle:空闲的,闲置的。
记住jedis用完得关闭close(),池子JedisPool不需要关闭。
创建池子的配置对象: JedisPoolConfig jpc=new JedisPoolConfig(); jpc.setMaxIdle(xxx); //设置最大闲置个数 jpc.setMinIdle(xxx); //设置最小闲置个数,保证最小闲置的 jpc.setMaxTotal(xxx); //最大连接数 简版jedisPool工具类: public class JedisUtils { static JedisPoolConfig jpc=null; static JedisPool jp=null; static{ jpc= new JedisPoolConfig(); jpc.setMaxIdle(30); jpc.setMinIdle(5); jpc.setMaxTotal(50); jp= new JedisPool(jpc, "192.168.233.128", 6379); } Jedis getJediss(){ Jedis j = jp.getResource(); return j; } } |
11. Redis数据类型
String:
字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这 便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等。 在Redis中字符串类型的Value最多可以容纳的数据长度是512M
Set key value:
Get key: value不存在返回null
Getset key value: 先拿到value再设置value
Incr key:原子性递增1,key若不存在,则初始值为0。若value 值不能转为整型,报错。
Decr key:原子性递减1,key不存在,则初始值为0.value值不能 转为整形,报错。
Incrby key increment:指定key的value增加increment,如key不 存在,默认初始值为0.value值不能转为整形,报错。
Decrby key ddecrment:指定key的value减少decrement,如key不 存在,默认初始值为0,value不能转为整形时,报错。
append key value:如果该key值存在,直接在value值追加value, key值不存在,重新创建该value和key。
Hash:
每一个Hash 可以存储4294967295个键值对。
非常适合存储对象信息,name,password,age等。
Hset key field value:为指定的key设置键值对。
Hgetall key:获得key中所有field/value键值对。
Hget key field:获得指定key中field的值value。
Hmset key fields:设置key中多个多个field/value。
Hmget key field:获得key中多个field的值。
Hexists key field:判断指定的key中的field是否存在。
Hlen key:获取key所包含field的数量。
hincrby key field increment:设置key中filed的值增加increment, 如:age增加20。
Del key:删除整个Map
Del key field:删除一条记录。
List:(LinkedList,底层链表):
Lpush key value1,value2,value3..向key关联的链表中插入value1, value2,value3,如果该key不存在,创建新key和与之关联 的链 表。(头插)
Rpush key value1,value2,value3...向key关联的链表中插入value1, value2,value3,如果该key不存在,在创建的新key和与之关 联的 链表。(尾插)
Lrange key start end:获取从start到end的所有value,-1表示尾, -2表示倒数第二个。
Lpushx key value1,value2,value3...仅当参数key存在时,头插。
Rpushx key value1,value2,value3...仅当参数key存在时,尾插。
Lpop key:弹出链表头部元素并返回。
Rpop key:弹出链表尾部元素并返回。
Rpoplpush resource destination:尾部元素弹出并添加至头部。可 以任意两个链表操作。
Llen key:返回value数量。
Lset key index value:替换脚标的元素值。0为头,-1为尾。
Lrem key count value:删除key中count个value,如果count》0, 从左删。若果count《0,从又删。=0,全删。
linsert key before|after pivot value:在pivot元素前或者后插入 value这个 元素。
Rplpush resouce destiontisn使用场景:
Set:
Sadd key value1,value2...添加
Srem key value1,value2...删除指定成员。
Smembers key:获得所有元素。
Sismember key member:判断成员是否存在。1表示存在0否
A-B集合运算
Sdiff key1 key2:返回属于key1不属于key2元素
Sinter key1,key2:返回交集。
Sunion key1,key2:返回并集。
Sortedset:
Zadd key score1 member2 score2 member2...若果member重 复,只把分数发覆盖。
Zsocre key member:获得指定成员的分数。
Zcard key:获得集合中成员数量。
Zrem key member1,member2,member3....删除指定成员。
Zrange key start end [withscore].返回key中脚标start到end所有 成员,可选参数意思连分数一起返回。
Zrevrange key start stop [withscore].先反转为从大到小,再返回成 员。分数返回可选。
Zremrangebyrank key start stop:按照排名返回删除元素。
Zremrangebyscore key min max:按照分数范围删除元素。
9. Keys的通用操作
Keys pattern:返回匹配的所有key ,*代表任意字符。
Del key1,key2.。。删除指定key。
Exists key:返回1存在,返回0不存在。
Rename key newkey:为当前的key重命名。
Expire key s:设置过期时间,单位s。
Ttl key:获取剩余时间,-1表示没设置超市,-2表示不存在。
Type key:返回key的类型,String,list,set,zset,hash
10. REDIS特性
多数据库:16个库 (0-15)。默认使用第一个。
Select 1;select语句选择数据库
Move key 1:将key移库到库1中。
补充:
Ping :判断连接是否存活。
Dbsize:返回库中key的数量。
Flushall:删除所有库的所有key。
11. 消息订阅与发布,事务
Subscribe channel;接收
Publish channel content:发布
第一个连接发布,第二个连接接收。
事务操作:当语句出现错误时,将忽略错误语句。
12. Redis的持久化(了解)和总结:
Redis主要做缓存,写在内存里。
两种方法持久化(写到磁盘上):
RDB(默认支持,无需配置):快照(备份)。
缺点:拍照时间有间隔,这个拍照间隔时间可以在配置文 件里修改。dum.rdb和redis.conf在同文件夹下。
AoF:以日志的形式记录所有操作步骤。
缺点:效率低