redis入门

来源:互联网 发布:代理商查询系统源码 编辑:程序博客网 时间:2024/06/02 06:46

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、一个高性能的key-value数据库。并提供多种语言的API。说到Key-Value数据库NoSQL数据库可以想到MongoDB

常见配置:指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合
    save <seconds> <changes>
    Redis默认配置文件中提供了三个条件:
    save 900 1
    save 300 10
    save 60 10000
 设置数据库的数量,默认数据库为0,可以使用SELECT <dbid>命令在连接上指定数据库id
    databases 16
字符串命令string:set key value,get key ,select index切换数据库,incr key 将key对应的值加一,append key value 给该key值对应的value追加值,del 删除
哈希命令hash(对象):hmset key name tzp sex 20存值,hgetall key取值
列表命令list(有索引):lpush|rpush key value1,value2 将值插入到列表中头面|尾面(集合),llen key 获取集合长度,LRANGE key start stop 获取列表指定范围内的元素


列表命令set(去重复):sadd key value1,value2 SMEMBERS key 返回集合中的所有成员

有序集合(sorted set)命令:ZADD key score1 member1 [score2 member2] 
向有序集合添加一个或多个成员,或者更新已存在成员的分数;ZCARD key 获取有序集合的成员数

设置登录密码:config set requirepass 123456

其后还包括订阅,事务,备份还原,java操作redis

详见http://www.runoob.com/redis/redis-tutorial.html

总结:

1.互相网项目怎么优化的?

  可以通过垂直拆分,水平拆分,主从读写分离等方法.

2.请比较下垂直拆分和水平拆分

项目比较
垂直拆分
水平拆分
拆分依据是指按功能模块拆分,这种方式多个数据库之间的表结构不同将同一个表的数据进行分块保存到不同的数据库中,这些数据库中的表结构完全相同举例说明比如分为订单库、商品库、用户库...。用户表通过性别拆分为男用户表和女用户表解决问题表与表之间的io竞争单表中数据量增长出现的压力不解决问题单表中数据量增长出现的压力表与表之间的io争夺

3.说下什么是NoSql

NoSQL = Not Only SQL ,不仅仅是Sql(关系数据库),一般用于互联网项目的超大规模数据的存储。

4.你知道哪些NoSql

 

名称
类型
数据存储选项
查询类型
附加功能
Redis使用内存存储 的非关系数据库字符串、列表、集合、散列表、有序集合每种数据类型都有自己的专属命令, 另外还有批量操作(bulk operation)和不完全(partial)的事务支持发布与订阅, 主从复制(master/slave replication), 持久化, 脚本(存储过程,stored procedure)memcached使用内存存储的键值缓存键值对创建命令、读取命令、更新命令、删除命令以及其他几个命令为提升性能而设的多线程服务器MySQL关系数据库每个数据库可以包含多个表, 每个表可以包含多个行; 可以处理多个表的视图(view); 支持空间(spatial)和第三方扩展SELECT 、 INSERT 、 UPDATE 、 DELETE 、函数、存储过程支持ACID性质(需要使用InnoDB), 主从复制和主主复制 (master/master replication)MongoDB使用硬盘存储(on-disk)的非关系文档存储每个数据库可以包含多个表, 每个表可以包含多个无schema (schema-less)的BSON文档创建命令、读取命令、更新命令、删除命令、条件查询命令,等等支持map-reduce操作,主从复制,分片, 空间索引(spatial index)

5.传统数据库事务管理是ACID,分布式数据库中是怎么管理?

  分布式数据库采用CAP, C:强一致性,A,可用性,P分区容错性

6.Redis是什么,有什么好处?

   Redis:REmote DIctionary Server(远程字典服务器),是一个高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,

7.Redis的值有哪几种数据类型?分别有什么特征

1 String,二进制字符串,Redis的字符串是字节序列。在Redis中字符串是二进制安全的,可以存储图片文件等,最大长度可达512兆。

2.Redis的列表是简单的字符串列表,排序插入顺序。可以添加元素到Redis列表的头部或尾部。

3.Set集合是字符串的无序集合。不可以重复

4. 哈希键值对的集合

5.有序集合,字符串不重复的集合。不同的是,一个有序集合的每个成员关联分数,用于以便采取有序set命令,从最小的到最大的分数有关。虽然成员都是独一无二的,分数可能会重复。

8.说出5个全局Key操作的方法?

删除

flushdb 清空当前选择的数据库
del mykey mykey2 删除了两个 Keys 

修改

move mysetkey 1 将当前数据库中的 mysetkey 键移入到 ID 为 1 的数据库中 
rename mykey mykey1 将 mykey 改名为 mykey1
renamenx oldkey newkey 如果 newkey 已经存在,则无效
expire mykey 100 将该键的超时设置为 100 秒 
persist mykey 将该 Key 的超时去掉,变成持久化的键

查询

keys my* 获取当前数据库中所有以my开头的key 
exists mykey 若不存在,返回0;存在返回1 
select 0 打开 ID 为 0 的数据库 
ttl mykey 查看存货时间还剩下多少秒
 type mykey 返回mykey对应的值的类型 
randomkey 返回数据库中的任意键

8,说出5种不同的Value的操作里面常见方法有什么特征,并且说出增删改查?

值为String的键值对,操作一般不用加前缀,  新增是 set  查询是get  删除 del  set也可以做修改,但setnx设值时可以判断如果有值,那么就不设定.

方法说明KeyStringListSetHashSort Set方法特征没前缀没前缀l前缀s前缀h前缀z前缀新增无set setnxlpush,rpush,linsertsadd,sinterhset,hmset ,hkeys,setnxzdd删除deldellremsremdelzrem修改rename

set

append

lsetsmove

hset

hmset

 查找keys

get

getbit

getrangge

lrange

lindex

smembers

sinter

sinterstore

hget

hgetall

hkeys

zrange

zscore

查询长度无strlenllenscardhlen

zcard

zcount

自增无

incr

incrby

decr

decrby

  

hincrby

hincrbyfloat

zincrby判断是否存在exists  sismemberhexists 

9.怎么样在Redis中给元素排序?

redis支持对list,set和sorted set元素的排序,用set命令就可以,具体命令如下

SORT key [BY pattern] [LIMIT start count] [GET pattern] [ASC|DESC] [ALPHA] [STORE dstkey]   具体例子可以参考这里

10.讲下Redis中事务?

Transaction tx = jedis.multi();        //开始

// 中间包含要执行的代码,

 List<Object> results = tx.exec(); //结束

11.Redis的watch是什么,怎么用的?

类似于数据库锁中的乐观锁.

在Redis的事务中,WATCH命令可用于提供CAS(check-and-set)功能。假设我们通过WATCH命令在事务执行之前监控了多个Keys,倘若在WATCH之后有任何Key的值发生了变化,EXEC命令执行的事务都将被放弃,同时返回Null 

12.怎么样提高redis的性能,一次处理多个命令?

可以用Redis提供的管道命令,默认的对redis的每个命令操作是同步模式,采用阻塞的方式调用,

而管道采用异步方式执行,一次可以处理很多个命令,性能可以明显提高

Pipeline p = jedis.pipelined();
p.set(key,value);//每个操作都发送请求给redis-server
p.get(key,value);
 
p.sync();//这段代码获取所有的response

13.请讲下Redis的数据库结构及其操作.

Redis默认是16个数据库,并且他们使用同一个账号,进入redis中默认是第一个数据库,

切换数据库可以用  select 索引号 命令,

清空当前数据库用 flushDB

清空所有数据库用 flushAll (比较危险,慎用)

查看当前数据库中key的数量 dbsize

14.讲下Redis的核心配置文件

 Redis的配置文件默认是Redis.conf,包括启动的端口号,默认数据库的大小,用户登录密码,备份模式都可以在这里设置

15.说下Redis的持久化方案

  Redis采用两种持久化方案,

第一种是快照模式(snapshorting),它将每一时刻的所有数据都写入硬盘里面,可以调用save命令(立即保存) 或者bgsave(后台保存)

第二叫只追加文件(AOF),它会在执行的命令里面,把将执行

16.Redis怎么样设置主从复制

在设置主从服务器的时候,一定只能对主服务器写人,从服务器不能写入.

要把一台服务器设置为从服务器很简单,只要在Redis的配置文件Redis.conf中,加上一条slaveof host port    host port指向的主服务器的端口号,

17.怎么样优化Redis

 1.根据程序要执行查询的类型,请选择最适合的结构类型,譬如不要用list当set用,排序的时候优先考虑有序集合

2.如果将大对象放入到Redis,可以考虑对大对象进行压缩

3.多使用管道(流水线)

4.使用主从服务器读写分离

18.你在项目中怎么用Redis

   我们在Redis种用了Java客户端,叫Jedis,基本上的命令和Redis命令相对应.


原创粉丝点击