一、Redis简介

1.关于关系型数据库和nosql数据库

关系型数据库是基于关系表的数据库,最终会将数据持久化到磁盘上,而nosql数据     库是基于特殊的结构,并将数据存储到内存的数据库。从性能上而言,nosql数据库 要优于关系型数据库,从安全性上而言关系型数据库要优于nosql数据库,所以在实    际开发中一个项目中nosql和关系型数据库会一起使用,达到性能和安全性的双保证。

2.为什么要使用Redis

1)易扩展 
 2)大数据量提高性能 
 3)多样灵活的数据模型

3.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的bin中

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也关闭了解决方案:可以通过修改配置文件
配置redis后台启动,即服务器启动了但不会创建控制台窗口

将redis.conf文件中的daemonize从no修改成yes表示后台启动

使用命令查看6379端口是否启动ps -ef | grep redis

在bin下面使用./redis-cli进入客户端

8)通过后台启动后怎么关闭?

二、使用java去操作Redis

三、Redis的常用命令

redis是一种高级的key-value的存储系统

其中的key是字符串类型,尽可能满足如下几点:

1)key不要太长,最好不要操作1024个字节,这不仅会消耗内存还会降低查找效率

2)key不要太短,如果太短会降低key的可读性

3)在项目中,key最好有一个统一的命名规范(根据企业的需求)

其中value  支持五种数据类型:

1)字符串型 string

2)字符串列表 lists

3)字符串集合 sets

4)有序字符串集合 sorted sets

5)哈希类型 hashs

我们对Redis的学习,主要是对数据的存储,下面将来学习各种Redis的数据类型的存储操作:

1.存储字符串string

字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等。  在Redis中字符串类型的Value最多可以容纳的数据长度是512M

1)set key value:设定key持有指定的字符串value,如果该key存在则进行覆盖操作。总是返回”OK”

2)get key:获取key的value。如果与该key关联的value不是String类型,redis  将返回错误信息,因为get命令只能用于获取String value;如果该key不存在,返 回null。

3)getset key value:先获取该key的值,然后在设置该key的值。

4)incr key:将指定的key的value原子性的递增1.如果该key不存在,其初始值     为0,在incr之后其值为1。如果value的值不能转成整型,如hello,该操作将执   行失败并返回相应的错误信息。

5)decr key:将指定的key的value原子性的递减1.如果该key不存在,其初始值    为0,在incr之后其值为-1。如果value的值不能转成整型,如hello,该操作将执  行失败并返回相应的错误信息。

6)incrby key increment:将指定的key的value原子性增加increment,如果该    key不存在,器初始值为0,在incrby之后,该值为increment。如果该值不能转成     整型,如hello则失败并返回错误信息

7)decrby key decrement:将指定的key的value原子性减少decrement,如果    该key不存在,器初始值为0,在decrby之后,该值为decrement。如果该值不能 转成整型,如hello则失败并返回错误信息

8)append key value:如果该key存在,则在原有的value后追加该值;如果该 key    不存在,则重新创建一个key/value

2.存储lists类型

在Redis中,List类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素。在插入时,如果该键并不存在,Redis将为该键创建一个新的链表。与此相反,如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除。List中可以包含的最大元素数量是4294967295。

从元素插入和删除的效率视角来看,如果我们是在链表的两头插入或删除元素,这将会是非常高效的操作,即使链表中已经存储了百万条记录,该操作也可以在常量时间内完成。然而需要说明的是,如果元素插入或删除操作是作用于链表中间,那将会是非常低效的。相信对于有良好数据结构基础的开发者而言,这一点并不难理解。

1)lpush key value1 value2...:在指定的key所关联的list的头部插入所有的    values,如果该key不存在,该命令在插入的之前创建一个与该key关联的空链     表,之后再向该链表的头部插入数据。插入成功,返回元素的个数。

2)rpush key value1、value2…:在该list的尾部添加元素

3)lrange key start end:获取链表中从start到end的元素的值,start、end可     为负数,若为-1则表示链表尾部的元素,-2则表示倒数第二个,依次类推…

4)lpushx key value:仅当参数中指定的key存在时(如果与key管理的list中没     有值时,则该key是不存在的)在指定的key所关联的list的头部插入value。

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

6)lpop key:返回并弹出指定的key关联的链表中的第一个元素,即头部元素。

7)rpop key:从尾部弹出元素。

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

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

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

11)lrem key count value:删除count个值为value的元素,如果count大于0,从头向尾遍历并删除count个值为value的元素,如果count小于0,则从尾向头遍历并删除。如果count等于0,则删除链表中所有等于value的元素。

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

3.存储sets类型

在Redis中,我们可以将Set类型看作为没有排序的字符集合,和List类型一样,我们也可以在该类型的数据值上执行添加、删除或判断某一元素是否存在等操作。需要 说明的是,这些操作的时间是常量时间。Set可包含的最大元素数是4294967295。

和List类型不同的是,Set集合中不允许出现重复的元素。和List类型相比,Set类
型在功能上还存在着一个非常重要的特性,即在服务器端完成多个Sets之间的聚合计
算操作,如unions、intersections和differences。由于这些操作均在服务端完成,
因此效率极高,而且也节省了大量的网络IO开销

1)sadd key value1、value2…:向set中添加数据,如果该key的值已有则不会      重复添加

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

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

4)sismember key member:判断参数中指定的成员是否在该set中,1表示存       在,0表示不存在或者该key本身就不存在

5)srem key member1、member2…:删除set中指定的成员

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

7)sdiff sdiff key1 key2:返回key1与key2中相差的成员,而且与key的顺序有关。即返回差集。

8)sdiffstore destination key1 key2:将key1、key2相差的成员存储在destination上

9)sinter key[key1,key2…]:返回交集。

10)sinterstore destination key1 key2:将返回的交集存储在destination上

11)sunion key1、key2:返回并集。

12)sunionstore destination key1 key2:将返回的并集存储在destination上

4.存储sortedset

Sorted-Sets和Sets类型极为相似,它们都是字符串的集合,都不允许重复的成员出现在一个Set中。它们之间的主要差别是Sorted-Sets中的每一个成员都会有一个分 数(score)与之关联,Redis正是通过分数来为集合中的成员进行从小到大的排序。然而需要额外指出的是,尽管Sorted-Sets中的成员必须是唯一的,但是分数(score) 却是可以重复的。

在Sorted-Set中添加、删除或更新一个成员都是非常快速的操作,其时间复杂度为 集合中成员数量的对数。由于Sorted-Sets中的成员在集合中的位置是有序的,因此,    即便是访问位于集合中部的成员也仍然是非常高效的。事实上,Redis所具有的这一  特征在很多其它类型的数据库中是很难实现的,换句话说,在该点上要想达到和Redis    同样的高效,在其它数据库中进行建模是非常困难的。

例如:游戏排名、微博热点话题等使用场景。

1)zadd key score member score2 member2 …
:将所有成员以及该成员的         分数存放到sorted-set中

2)zcard key:获取集合中的成员数量

3)zcount key min max:获取分数在[min,max]之间的成员

zincrby key increment member:设置指定成员的增加的分数。

zrange key start end [withscores]:获取集合中脚标为start-end的成员,[withscores]参数表明返回的成员包含其分数。

zrangebyscore key min max [withscores] [limit offset
count]:返回分数在[min,max]的成员并按照分数从低到高排序。[withscores]:显示分数;[limit offset
count]:offset,表明从脚标为offset的元素开始并返回count个成员。

zrank key member:返回成员在集合中的位置。

zrem key member[member…]:移除集合中指定的成员,可以指定多个成员。

zscore key member:返回指定成员的分数

5.存储hash

Redis中的Hashes类型可以看成具有String Key和String
Value的map容器。所以该类型非常适合于存储值对象的信息。如Username、Password和Age等。如果
Hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间。每一个Hash可以存储4294967295个键值对。

1)hset key field value:为指定的key设定field/value对(键值对)。

2)hgetall key:获取key中的所有filed-vaule

3)hget key field:返回指定的key中的field的值

4)hmset key fields:设置key中的多个filed/value

5)hmget key fileds:获取key中的多个filed的值

6)hexists key field:判断指定的key中的filed是否存在

7)hlen key:获取key所包含的field的数量

8)hincrby key field increment:设置key中filed的值增加increment,如:age         增加20

总结:

1、nosql

2、redis安装----linux(重点)

3、jedis(重点)

4、redis的数据操作类型 5种 (了解) --- string和hash

5、redis的其他

Redis入门,Jedis和常用命令的更多相关文章

  1. Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式)

    Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式) 原文地址:http://alanland.iteye.com/admin/blogs/1600685(欢迎转载 ...

  2. redis学习-集合set常用命令

    redis学习-集合set常用命令   1.sadd:添加一个元素到集合中(集合中的元素无序的并且唯一) 2.smembers:查看集合中所有的元素(上图事例) 3.srem:删除结合中指定的元素 4 ...

  3. Git版本控制软件结合GitHub从入门到精通常用命令学习手册(转)

    简要参考:http://www.tuicool.com/articles/mEvaq2 http://gitref.org/zh/index.html GIT 学习手册简介 本站为 Git 学习参考手 ...

  4. redis学习-散列表常用命令(hash)

    redis学习-散列表常用命令(hash)   hset,hmset:给指定散列表插入一个或者多个键值对 hget,hmget:获取指定散列表一个或者多个键值对的值 hgetall:获取所欲哦键值以及 ...

  5. 解析Redis操作五大数据类型常用命令

    摘要:分享经常用到一些命令和使用场景总结,以及对Redis中五大数据类型如何使用cmd命令行的形式进行操作的方法. 本文分享自华为云社区<Redis操作五大数据类型常用命令解析>,作者:灰 ...

  6. 【JAVAWEB学习笔记】27_Redis:在Linux上的安装、Jedis和常用命令

    一.Redis简介 1.关于关系型数据库和nosql数据库 关系型数据库是基于关系表的数据库,最终会将数据持久化到磁盘上,而nosql数据     库是基于特殊的结构,并将数据存储到内存的数据库.从性 ...

  7. Redis的数据类型及其常用命令

    快速入门Redis 首先安装redis: windows下安装redis Linux下安装redis 1. 什么是redis Redis属于nosql(非关系型数据库) 关系型数据库是基于关系表的数据 ...

  8. 【redis】05Redis的常用命令及高级应用

    Redis常用命令     Redis提供了非常丰富的命令,对数据库和个中数据类型进行操作, 这些命令呢,可以在Linux终端使用. 分为两大类的命令,一种是键值相关的命令,一种是服务器相关的命令, ...

  9. redis学习(二) redis数据结构介绍以及常用命令

    redis数据结构介绍 我们已经知道redis是一个基于key-value数据存储的数据结构数据库,这里的key指的是string类型,而对应的value则可以是多样的数据结构.其中包括下面五种类型: ...

随机推荐

  1. JS事件之自建函数bind()与兼容性问题解决

    JavaScript事件绑定常用方法 对象.事件 = 函数; 它只能同时为一个对象的一个事件绑定一个响应函数 不能绑定多个,如果有多个,后面的会覆盖前面的 addEventListener() 此方法 ...

  2. 定位布局中关于z-index的一些问题

    定位布局中关于z-index的一些问题 使不同父元素的子元素不会被其他父元素遮盖 背景 两父元素相互遮盖(或部分遮盖) html如下 <div class="main"> ...

  3. 洛谷$P2469\ [SDOI2010]$ 星际竞速 网络流

    正解:网络流 解题报告: 传送门$QwQ$ 题目好长昂,,,大概概括下就说有$m$条单向边,$n$个点,每条边有一条边权,每个点有一个点权,然后问每个点都要到达一遍的最小代价是多少$QwQ$? 发现有 ...

  4. 洛谷$P$2522 $Problem\ b\ [HAOI2011]$ 莫比乌斯反演

    正解:莫比乌斯反演 解题报告: 传送门! 首先看到这个显然就想到莫比乌斯反演$QwQ$? 就先瞎搞下呗$QwQ$ $gcd(x,y)=k$,即$gcd(\left \lfloor \frac{x}{k ...

  5. Oracle:存储过程的使用

    Oracle:存储过程的使用 以sys身份登录,创建用户c##zs,密码111,分配dba角色 以c##zs身份登录,导入数据表 编写存储过程,根据学生学号,查询出学生所选课程成绩等级, 打印结果示例 ...

  6. 「P5004」专心OI - 跳房子 解题报告

    题面 把\(N\)个无色格子排成一行,选若干个格子染成黑色,要求每个黑色格子之间至少间隔\(M\)个格子,求方案数 思路: 矩阵加速 根据题面,这一题似乎可以用递推 设第\(i\)个格子的编号为\(i ...

  7. flask 中的 werkzeug Local,LocalStack 和 LocalProxy 技术应用

    什么是 Local wsgi 每次请求,会把过程进行抽离无状态话,过程数据存储在本次请求的全局变量中,使用到了Local. Local 作为每次请求的全局命令空间,属于每次请求的私有 LocalSta ...

  8. CAP 3.0 版本发布通告

    前言 大家好,我们很高兴宣布 CAP 发布了 3.0 版本正式版. 自从上次 CAP 2.6 版本发布 以来,已经过去了几个月的时间,关注的朋友可能知道,在这几个月的时间里,也发布了几个预览版的 3. ...

  9. Sorted 内置函数的排序使用

    Sorted 内置函数的排序使用 Sorted 排序列表 1.倒序对列表进行排序 # 对列表进行降序序排序 list = [1,3,4,23,6,7] list = sorted(list,rever ...

  10. 2019牛客暑期多校第二场题解FH

    F.Partition problem 传送门 题意:有2n个人,分两组,每组n个,要求sum(vij)最大值. 题解:n并不大我们可以枚举每个人是在1组还是2组爆搜. 代码: #include &l ...