redis学习第一天

1,安装

[[email protected] ~]# tar zxvf redis-3.0.2.tar.gz
[[email protected] ~]# mv redis-3.0.2 /usr/local/redis
[[email protected] ~]# cd /usr/local/redis
[[email protected] redis]#make &&make install
over

make 出错

zmalloc.h:50:31: 错误:jemalloc/jemalloc.h:没有那个文件或目录

使用 make MALLOC=libc && make install

#官方网站提示这样启动服务

src/redis-server

#但是出现了上面的问题后,请用下面的方式启动redis服务

nohup src/redis-server redis.conf &

关闭redis

redis-cli shutdown

2.

key相关指令

exists key key            存在返回1,不存在返回0.

del key1 keyn             删除指定key,返回删除成功的数量。

type key                  查看key的数据类型

randomkey                 当前库随机返回一个key

rename oldkey newkey      重命名一个key,如果newkey是存在的名字,那么newkey将被删除。

renamenx                  同上,如果存在将会改名失败,返回0.

expire key seconds        为key指定过期时间 单位是秒 0

ttl key                   返回key剩余过期时间,-1表示未设置 -2表示已经过期

select db-index           选择数据库 等于use datebases,默认连接的是0,默认有16个.

move key db-index         移动key到指定数据库,返回1表示成功,0表示失败.

3.

redis的value

string hash list set sorted set 5种

3.1 string类型

set key                             设置key或者更新key

setnx key                           创建key,如果已经存在,则返回0.

get key                             获取key的value

getset                              key value 获取key的值,然后更新key的值

mget key1 keyn                      批量获取

mset key1 value1 key2 value2        批量设置,如果有错误,将不做任何操作。

msetnx key1 value1 key2 value2      同上 但是如果有存在的key,将不做任何操作。

ince key                            对key做+1操作,如果不是int类型,将会出错,如果key不存在,将返回1.

decy key                            对key做-1操作,其他同上。

incrby key integer                  对key加上指定数值,如果key不存在将会创建

decrby key integer                  对key减去指定数值,其他同上,可以通过负值,达到incrby的效果,上同。

3.2

hash类型

hset key field value             设置,如果不存在则创建,例如: hset id xiaoming 19912213 | hset age xiaoming 17

hget key field                   获取field的key值 例如: hget id xiaoming

hmget key field1 field2          批量获取,例如: hmget id xiaoming daming

hmset key field1 value1 ...      批量设置 例如: hmset age xiaoming 18 daming 19

hincrby  key field integer       将key增加integer,成功返回新的值 可以为负数。

hexists key field                检测field和key是否存在,存在返回1 否则返回0

hdel key field                   删除指定key,当field没有key的时候 field不存在。

hlen key                         返回指定key的field数量

hkeys key                        返回key的所有field

hvals key                        返回key的所有value

hgetall key                      返回key的所有filed和value

3.3

list类型 原地址 http://www.cnblogs.com/stephen-liu74/archive/2012/02/14/2351859.html

命令原型 时间复杂度 命令描述 返回值
LPUSH key value [value ...]  O(1) 在指定Key所关联的List Value的头部插入参数中给出的所有Values。如果该Key不存在,该命令将在插入之前创建一个与该Key关联的空链表,之后再将数据从链表的头部插入。如果该键的Value不是链表类型,该命令将返回相关的错误信息。  插入后链表中元素的数量。
LPUSHX key value  O(1)   仅有当参数中指定的Key存在时,该命令才会在其所关联的List Value的头部插入参数中给出的Value,否则将不会有任何操作发生。 插入后链表中元素的数量。 
LRANGE key start stop  O(S+N) 时间复杂度中的S为start参数表示的偏移量,N表示元素的数量。该命令的参数start和end都是0-based。即0表示链表头部(leftmost)的第一个元素。其中start的值也可以为负值,-1将表示链表中的最后一个元素,即尾部元素,-2表示倒数第二个并以此类推。该命令在获取元素时,start和end位置上的元素也会被取出。如果start的值大于链表中元素的数量,空链表将会被返回。如果end的值大于元素的数量,该命令则获取从start(包括start)开始,链表中剩余的所有元素。 返回指定范围内元素的列表。
LPOP key  O(1)  返回并弹出指定Key关联的链表中的第一个元素,即头部元素,。如果该Key不存,返回nil。 链表头部的元素。
LLEN key O(1)  返回指定Key关联的链表中元素的数量,如果该Key不存在,则返回0。如果与该Key关联的Value的类型不是链表,则返回相关的错误信息。 链表中元素的数量。
LREM key count value  O(N)  时间复杂度中N表示链表中元素的数量。在指定Key关联的链表中,删除前count个值等于value的元素。如果count大于0,从头向尾遍历并删除,如果count小于0,则从尾向头遍历并删除。如果count等于0,则删除链表中所有等于value的元素。如果指定的Key不存在,则直接返回0。 返回被删除的元素数量。
LSET key index value  O(N)  时间复杂度中N表示链表中元素的数量。但是设定头部或尾部的元素时,其时间复杂度为O(1)。设定链表中指定位置的值为新值,其中0表示第一个元素,即头部元素,-1表示尾部元素。如果索引值Index超出了链表中元素的数量范围,该命令将返回相关的错误信息。
LINDEX key index  O(N)  时间复杂度中N表示在找到该元素时需要遍历的元素数量。对于头部或尾部元素,其时间复杂度为O(1)。该命令将返回链表中指定位置(index)的元素,index是0-based,表示头部元素,如果index为-1,表示尾部元素。如果与该Key关联的不是链表,该命令将返回相关的错误信息。 返回请求的元素,如果index超出范围,则返回nil。
LTRIM key start stop  O(N)  N表示被删除的元素数量。该命令将仅保留指定范围内的元素,从而保证链接中的元素数量相对恒定。start和stop参数都是0-based,0表示头部元素。和其他命令一样,start和stop也可以为负值,-1表示尾部元素。如果start大于链表的尾部,或start大于stop,该命令不错报错,而是返回一个空的链表,与此同时该Key也将被删除。如果stop大于元素的数量,则保留从start开始剩余的所有元素。
LINSERT key BEFORE|AFTER pivot value  O(N)  时间复杂度中N表示在找到该元素pivot之前需要遍历的元素数量。这样意味着如果pivot位于链表的头部或尾部时,该命令的时间复杂度为O(1)。该命令的功能是在pivot元素的前面或后面插入参数中的元素value。如果Key不存在,该命令将不执行任何操作。如果与Key关联的Value类型不是链表,相关的错误信息将被返回。 成功插入后链表中元素的数量,如果没有找到pivot,返回-1,如果key不存在,返回0。
RPUSH key value [value ...]  O(1)  在指定Key所关联的List Value的尾部插入参数中给出的所有Values。如果该Key不存在,该命令将在插入之前创建一个与该Key关联的空链表,之后再将数据从链表的尾部插入。如果该键的Value不是链表类型,该命令将返回相关的错误信息。  插入后链表中元素的数量。 
RPUSHX key value  O(1)  仅有当参数中指定的Key存在时,该命令才会在其所关联的List Value的尾部插入参数中给出的Value,否则将不会有任何操作发生。  插入后链表中元素的数量。 
RPOP key  O(1)  返回并弹出指定Key关联的链表中的最后一个元素,即尾部元素,。如果该Key不存,返回nil。  链表尾部的元素。 
RPOPLPUSH source destination  O(1)  原子性的从与source键关联的链表尾部弹出一个元素,同时再将弹出的元素插入到与destination键关联的链表的头部。如果source键不存在,该命令将返回nil,同时不再做任何其它的操作了。如果source和destination是同一个键,则相当于原子性的将其关联链表中的尾部元素移到该链表的头部。 返回弹出和插入的元素。

第一天over。

时间: 2024-10-28 22:45:48

redis学习第一天的相关文章

Redis 学习第一课:安装Linux Redis

对于分布式缓存,之前公司项目中只使用了MemCached,使用比较方便,有现成的C#版本组件. 如今用Redis的公司有很多,所以打算了解一下Redis. Redis的官网地址:http://redis.io Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMware主持.从2013年5月开始,Redis的开发由Pivotal赞助. Redis是一个key-

Spring Data Redis学习

本文是从为知笔记上复制过来的,懒得调整格式了,为知笔记版本是带格式的.点这里 为知笔记版本 Spring Data Redis 学习 Version 1.8.4.Release 前言 1.新功能 1.1.Spring Data Redis 1.8 新特性 1.2.Spring Data Redis 1.7 新特性 1.3.Spring Data Redis 1.6 新特性 1.4.Spring Data Redis 1.5 新特性 介绍 2.为什么选择Spring Data Redis? 3.要

Redis——学习之路四(初识主从配置)

首先我们配置一台master服务器,两台slave服务器.master服务器配置就是默认配置 端口为6379,添加就一个密码CeshiPassword,然后启动master服务器. 两台slave服务器配置如下: 1.先找到配置redis.windows-service.config文件修改port 6379 为port 6380 2.然后配置master服务器地址:slaveof 127.0.0.1 6379,然后主服务有密码还需要配置密码 masterauth CeshiPassword(本

Redis——学习之路三(初识redis config配置)

我们先看看config 默认情况下系统是怎么配置的.在命令行中输入 config get *(如图) 默认情况下有61配置信息,每一个命令占两行,第一行为配置名称信息,第二行为配置的具体信息. 我们就从上到下来理解一下这些配置信息中的某些配置: 1.dbfilename是本地持久化存储数据库文件名,默认为dump.rdb.我可以在安装目录文件夹下找到这个文件. 2.requirepass是密码,即连接服务器的密码,默认为空.下面我来设置一个密码然后用带密码的命令连接一遍. 3.msterauth

C#中使用Redis学习二 在.NET4.5中使用redis hash操作

C#中使用REDIS学习一 WINDOWS安装REDIS服务器端和客户端 http://www.tuicool.com/articles/uMb2Yjz 摘要 上一篇讲述了安装redis客户端和服务器端,也大体地介绍了一下redis.本篇着重讲解.NET4.0 和 .NET4.5中如何使用redis和C# redis操作哈希表.并且会将封装的一些代码贴一下.在讲解的过程中,我打算结合redis操作命令一起叙述,算是作为对比吧.这样也能让读者清楚了 解,所分装的代码对应的redis的哪一些操作命令

redis学习笔记(7)---压缩字典zipmap

zipmap 在hashtable实现中,Redis引入了zipmap数据结构,保证在hashtable刚创建以及元素较少时,用更少的内存来存储,同时对查询的效率也不会受太大的影响. zipmap利用字符串实现了简单的hash表,来存储少量key-value对. 内存布局 zipmap的内存布局如下: 1)zmlen:1个字节 ,记录当前zipmap中key-value对的数量.由于zmlen只有1个字节,因此规定其表示的数量只能为0~254,当zmlen>254时,就需要遍历整个zipmap来

redis学习笔记(11)---字符串命令及实现

对象类型与编码方式 对于字符串类型的命令,redis数据库会为每个对象创建一个字符串类型(REDIS_STRING)的对象. 对于字符串类型的对象,可以支持三种编码方式: #define REDIS_ENCODING_RAW 0 /* Raw representation */ #define REDIS_ENCODING_INT 1 /* Encoded as integer */ #define REDIS_ENCODING_EMBSTR 8 /* Embedded sds string e

C#中使用Redis学习二 .NET4.5中使用redis hash操作

上一篇>> 摘要 上一篇讲述了安装redis客户端和服务器端,也大体地介绍了一下redis.本篇着重讲解.NET4.0 和 .NET4.5中如何使用redis和C# redis操作哈希表.并且会将封装的一些代码贴一下.在讲解的过程中,我打算结合redis操作命令一起叙述,算是作为对比吧.这样也能让读者清楚了解,所分装的代码对应的redis的哪一些操作命令. hash哈希表简介 如何在.NET4.0/4.5中安装redis组件? 在上一篇博文中,安装好的redis服务器端,要记得开启服务.然后再

为什么C/C++程序员都要阅读Redis源码之:Redis学习事件驱动设计

为什么我说C/C++程序员都要阅读Redis源码 主要原因就是『简洁』.如果你用源码编译过Redis,你会发现十分轻快,一步到位.其他语言的开发者可能不会了解这种痛,作为C/C++程序员,如果你源码编译安装过Nginx/Grpc/Thrift/Boost等开源产品,你会发现有很多依赖,而依赖本身又有依赖,十分痛苦.通常半天一天就耗进去了.由衷地羡慕 npm/maven/pip/composer/...这些包管理器.而Redis则给人惊喜,一行make了此残生. 除了安装过程简洁,代码也十分简洁.