1.安装

1)不指定安装位置,则会把redis的可执行文件安装到  redis-2.8.6/src/目录下

[root@CentOS6 ~]# ls

anaconda-ks.cfg  httpd-2.2.9     install.log         redis-2.8.6.tar.gz

[root@CentOS6 ~]# tar xzf redis-2.8.6.tar.gz && cd redis-2.8.6 && make

[root@localhost ~]# make PREFIX=/usr/local/redis install

#指定安装位置,如果没有指定安装位置PREFIX=/usr/local/redis,则make install会把redis 安装到/usr/local/bin/目录下

[root@localhost ~]# mkdir /usr/local/redis/etc

[root@localhost ~]# cp /root/redis-2.8.6/redis.conf /usr/local/redis/etc/

2)修改配置文件

[root@localhost redis]# vi /usr/local/redis/etc/redis.conf

daemonize no 改为   daemonize yes     #后台启动

端口 6379

3)启动时要指定配置文件才可以正常启动-------路径/redis-server  配置文件

[root@CentOS6 bin]# cd /usr/local/redis/bin/ && \

./redis-server  /usr/local/redis/etc/redis.conf

4)关闭redis

A)[root@localhost ~]# /usr/local/redis/bin/redis-cli shutdown

B)[root@localhost ~]# pkill  -9 redis

5)#客户端连接

A)

-h  IP : 连接指定的redis服务器

-p  6379: 指定redis服务器的端口

-a  密码: 使用密码登录

-n 数据库号: 指定连接哪个数据库

B)启动客户端连接[root@localhost redis]# /usr/local/redis/bin/redis-cli

C)退出 quit

D)连接库启动-------默认16个库0-15

[root@CentOS6 bin]# /usr/local/redis/bin/redis-cli -n 1

127.0.0.1:6379[1]>

2.配置文件

1)[root@localhost redis]# vi /usr/local/redis/etc/redis.conf

2)如果以后台进程运行的话,就需要指定pid,你可以在此自定义redis.pid文件的位置。

pidfile /var/run/redis.pid    ----通过进程id判断服务是否启动运行

3)#接受连接的端口号,如果端口是0则redis将不会监听TCP socket连接

port 6379

4)#连接超时时间,单位秒。(0 to disable)?

timeout 300 ----默认是0

5)#日志级别,默认是verbose(详细),各种日志级别:

#notice:比较适合生产环境

6)日志位置

# Specify the log file name. Also the empty string can be used to force

# Redis to log on the standard output. Note that if you use standard

# output for logging but daemonize, logs will be sent to /dev/null

logfile "/usr/local/redis/redis.log" 日志保存位置

7)设置数据库数目。默认的数据库是DB 0。------默认启用了16个库 0-15

databases 16

3.Redis的数据类型

1)共计5种类型:string(字符串)、hash(哈希表) list(双向队列)、set(集合)和zset(有序集合)

2) String(子串类型)----一个Key对应一个Value

A)set 键  "值"   设置键值 若键已经存在会覆盖

127.0.0.1:6379> set name machong

OK

127.0.0.1:6379>

B)get 键 得到键值

127.0.0.1:6379> get name

"machong"

127.0.0.1:6379>

C)setnx 键 值 当该键不存在时设置值,若键存在返回0表示失败(防止覆盖)

127.0.0.1:6379> setnx name ma

(integer) 0

127.0.0.1:6379> setnx name1 ma

(integer) 1

D)setex 键 [有效时间] 值

设置一个指定有效期的键和值(单位秒)。不写有效时间则表示永久有效,等价于set

127.0.0.1:6379> setex test 30 11111

OK

127.0.0.1:6379> ttl test  ttl 键--以秒为单位,返回给定 key 的剩余生存时间

(integer) 13--------------以秒为单位,返回 key 的剩余生存时间

127.0.0.1:6379> ttl test---当 key 不存在时,返回 -2

(integer) -2

127.0.0.1:6379>

127.0.0.1:6379> get test

(nil)

127.0.0.1:6379> ttl name

(integer) -1----------------当 key 存在但没有设置剩余生存时间时,返回 -1

127.0.0.1:6379>

E) setrange 键 位置 子字串   替换子字符串 (替换长度由子子串长度决定)

127.0.0.1:6379> set str abcdef

OK

127.0.0.1:6379> setrange str 5 a

(integer) 6

127.0.0.1:6379> get str

"abcdea"

127.0.0.1:6379>

#将str键对应值的第5个位置开始替换(字符串位置从0开始计算)

F) mset 键1 值1 键2 值2 键3 值3 ....

批量设置键和值,成功则返回ok

127.0.0.1:6379> mset name machong age 23 sex man

OK

127.0.0.1:6379>

G) mget 键1 键2 键3....

批量获取值

127.0.0.1:6379> mget name age sex

1) "machong"

2) "23"

3) "man"

127.0.0.1:6379>

H) msetnx 键1 值1 键2 值2 键3 值3 ....

批量设置不存在的键和值,成功则返回ok

127.0.0.1:6379> msetnx name xiaofei age 20 sex nv

(integer) 0

127.0.0.1:6379>

127.0.0.1:6379> msetnx name2 xiaofei age2 20 sex2 nv

(integer) 1

127.0.0.1:6379>

127.0.0.1:6379> mget name2 age2 sex2

1) "xiaofei"

2) "20"

3) "nv"

127.0.0.1:6379>

I) getset 键 新值

获取原值,并设置新值

127.0.0.1:6379> getset name2 xiaofeifei

"xiaofei"

127.0.0.1:6379> get name2

"xiaofeifei"

127.0.0.1:6379>

J) getrange 键 0 4

获取指定范围的值(获取指定0到4位置上的值,字符串位置从0开始计算)

127.0.0.1:6379> getrange name2 4 6

"fei"

127.0.0.1:6379>

K) incr 键

指定键的值做加1操作,返回加后的结果(只能加数字)。

127.0.0.1:6379> incr age

(integer) 24

127.0.0.1:6379> incr age

(integer) 25

127.0.0.1:6379>

L) incrby 键 m

//其中m可以是正整数或负整数

加指定值,键不存在时候会设置键

127.0.0.1:6379> incrby age 10

(integer) 35

127.0.0.1:6379>

127.0.0.1:6379> incrby age -15

(integer) 20

127.0.0.1:6379>

M) decr 键

指定键的值做减1操作,返回减后的结果。

127.0.0.1:6379> decr age

(integer) 19

127.0.0.1:6379>

N) decrby 键 n

//其中n可以是正整数或负整数

设置某个键减上指定值

127.0.0.1:6379> decrby age 4

(integer) 15

127.0.0.1:6379> decrby age -5

(integer) 20

127.0.0.1:6379>

0)append  键 追加字串

给指定key的字符串追加value,返回新字符串值的长度

127.0.0.1:6379> append name2 " have a hot body!"

(integer) 27

127.0.0.1:6379> get name2

"xiaofeifei have a hot body!"

127.0.0.1:6379>

P) strlen 键名

strlen求一个键长度

127.0.0.1:6379> strlen name2

(integer) 27

127.0.0.1:6379>

Q)del命令:删除一个键

127.0.0.1:6379> set test aaaa

OK

127.0.0.1:6379> get test

"aaaa"

127.0.0.1:6379> del test

(integer) 1

127.0.0.1:6379> keys *

1) "age2"

2) "name1"

3) "str"

4) "sex2"

5) "name2"

6) "name"

7) "sex"

8) "age"

127.0.0.1:6379>

3) hashs类型

#注意:redis中没有表概念,所有的数据都存入键中。

string键类型:所有的值(可以是任何数据类型)都保存在一个键当中,放在一个内存块中

hashs键类型:所有的值也都保存在一个键当中,只是放在不同的内存块中,每个块称作字段

A)hset key field value

设置一个键,在键中保存字段和值

hset 哈希集(键) 字段 值

127.0.0.1:6379> hset user1 name xiaoqiang

(integer) 1

127.0.0.1:6379> keys *

1) "age2"

2) "name1"

3) "str"

4) "sex2"

5) "name2"

6) "name"

7) "user1"

8) "sex"

9) "age"

127.0.0.1:6379>

B)>hsetnx  键  字段  值

设置一个键中,不存在的字段和值。如果字段存在则报错(成功返回1,失败返回0)

hget 键 字段  获取键中的一个指定字段的值

127.0.0.1:6379> hsetnx user1 name xiaoyou

(integer) 0

127.0.0.1:6379> hget user1 name

"xiaoqiang"

127.0.0.1:6379>

C)hmset  键  字段1  值1  字段2  值2 …  在一个键中,批量设置字段

hmget 键 字段1 [字段2…]  获取键中一个或多个字段的值

127.0.0.1:6379> hmset user2 name youyou age 23 sex man

OK

127.0.0.1:6379> hmget user2 name age sex

1) "youyou"

2) "23"

3) "man"

127.0.0.1:6379>

D) hexists :判断指定的字段是否存在于键中

127.0.0.1:6379> HEXISTS user2 nam

(integer) 0---------------------------不存在

127.0.0.1:6379> HEXISTS user2 name

(integer) 1---------------------------存在

127.0.0.1:6379>

E) hlen :获取键中的字段数量

127.0.0.1:6379> hlen user2

(integer) 3

127.0.0.1:6379>

F)hkeys :获取键中的所有字段名

127.0.0.1:6379> hkeys user2

1) "name"

2) "age"

3) "sex"

127.0.0.1:6379>

G)hvals:获取键中所有字段的值

127.0.0.1:6379> HVALS user2

1) "youyou"

2) "23"

3) "man"

127.0.0.1:6379>

H) hgetall :获取键中的所有字段和值

127.0.0.1:6379> hgetall user2

1) "name"

2) "youyou"

3) "age"

4) "23"

5) "sex"

6) "man"

127.0.0.1:6379>

I)hincrby:将键中指定字段的值,增加指定的数字

127.0.0.1:6379> hincrby user2 age 5 ----只有数字的值才可增加

(integer) 28

127.0.0.1:6379>

J)hdel 键 字段1 字段2

删除键中的一个或多个字段

127.0.0.1:6379> hdel user2 age sex

(integer) 2

127.0.0.1:6379> HGETALL user2

1) "name"

2) "youyou"

127.0.0.1:6379>

K)删除一个键,还是要使用del命令

127.0.0.1:6379> del user2

(integer) 1

127.0.0.1:6379> HGETALL user2

(empty list or set)

127.0.0.1:6379>

4) list类型(双向链表结构)

List是一个链表结构,主要功能是push、pop、获取一个范围的所有值等等,操作中key理解为链表的名字。Redis的list类型其实就是一个每个子元素都是string类型的双向链表。列表允许有重复值

A)lpush 键 值1 [值2…]

从队列左边向队列写入一个或多个值(认为队列的左面为队列头,右边为队列尾)

lrange 键 起始下标 终止下标

从队列中获取指定的返回值(从队列左边向右获取)

下标:0代表队列中第一个元素,1代表第二个元素,依次类推

-1代表队列中最后一个元素,-2代表倒数第二个元素

127.0.0.1:6379> lpush list 1 2 3 4 5 6

(integer) 6

127.0.0.1:6379> LRANGE list 0 -1

1) "6"----------是从左面写入队列的最后一个值,所以在队列的开头

2) "5"

3) "4"

4) "3"

5) "2"

6) "1"-----------是从左面写入队列的第一个值,所以直接放到了队列尾

127.0.0.1:6379>

127.0.0.1:6379> LRANGE list -5 3

1) "5"----------从后面数第5个元素

2) "4"

3) "3"---------从左边数下标为3的元素

127.0.0.1:6379>

B)rpush 键 值1 [值2…]

从队列右边向队列写入一个或多个值

127.0.0.1:6379> rpush list1 1 2 3 4 5 6

(integer) 6

127.0.0.1:6379> LRANGE list1 0 -1

1) "1"

2) "2"

3) "3"

4) "4"

5) "5"

6) "6"

127.0.0.1:6379>

C)linsert  键  before|after  原值  新值

在队列中指定元素之前或之后插入新值

127.0.0.1:6379> linsert list1 before 3 abc

(integer) 7

127.0.0.1:6379> LRANGE list1 0 -1

1) "1"

2) "2"

3) "abc"

4) "3"

5) "4"

6) "5"

7) "6"

127.0.0.1:6379>

D)lset  键  下标  新值

给队列中指定元素设定新值

127.0.0.1:6379> lset list1 0 11

OK

127.0.0.1:6379> LRANGE list1 0 -1

1) "11"

2) "2"

3) "abc"

4) "3"

5) "4"

6) "5"

7) "6"

127.0.0.1:6379>

E)lrem  键  n  指定值

从队列中删除n个值为“指定值”的元素

n > 0 从队列头向尾删除n个元素

n < 0 从队列尾向头删除n个元素

n = 0 删除所有值为“指定值”的元素

127.0.0.1:6379> rpush list3 a 1 a 2 a 3 a 4 a 5 a 6

(integer) 12

127.0.0.1:6379> LRANGE list3 0 -1

1) "a"

2) "1"

3) "a"

4) "2"

5) "a"

6) "3"

7) "a"

8) "4"

9) "a"

10) "5"

11) "a"

12) "6"

127.0.0.1:6379> lrem list3 -2 a

(integer) 2

127.0.0.1:6379> LRANGE list3 0 -1

1) "a"

2) "1"

3) "a"

4) "2"

5) "a"

6) "3"

7) "a"

8) "4"

9) "5"

10) "6"

127.0.0.1:6379>

127.0.0.1:6379> lrem list3 0 a

(integer) 4

127.0.0.1:6379> LRANGE list3 0 -1

1) "1"

2) "2"

3) "3"

4) "4"

5) "5"

6) "6"

127.0.0.1:6379>

F)ltrim  键  起始下标  结束下标

修剪队列,让队列只保留指定指定范围内的元素

127.0.0.1:6379> rpush list4 1 2 3 4

(integer) 4

127.0.0.1:6379> LRANGE list4 0 -1

1) "1"

2) "2"

3) "3"

4) "4"

127.0.0.1:6379> ltrim list4 1 2

OK

127.0.0.1:6379> LRANGE list4 0 -1

1) "2"

2) "3"

127.0.0.1:6379>

G)lpop  键

从指定的队列左面移除一个值

127.0.0.1:6379> LRANGE list1 0 -1

1) "11"

2) "2"

3) "abc"

4) "3"

5) "4"

6) "5"

7) "6"

127.0.0.1:6379> lpop list1

"11"

127.0.0.1:6379> LRANGE list1 0 -1

1) "2"

2) "abc"

3) "3"

4) "4"

5) "5"

6) "6"

127.0.0.1:6379>

H)rpop  键

从指定队列的右边移除一个值

127.0.0.1:6379> rpop list1

"6"

127.0.0.1:6379> LRANGE list1 0 -1

1) "2"

2) "abc"

3) "3"

4) "4"

5) "5"

127.0.0.1:6379>

I)rpoplpush  源队列  目标队列

移除源队列的最后一个元素,并把该元素写入目标队列

127.0.0.1:6379> LRANGE list1 0 -1

1) "2"

2) "abc"

3) "3"

4) "4"

5) "5"

127.0.0.1:6379> LRANGE list2 0 -1

(empty list or set)

127.0.0.1:6379> LRANGE list3 0 -1

1) "1"

2) "2"

3) "3"

4) "4"

5) "5"

6) "6"

127.0.0.1:6379> RPOPLPUSH list1 list3

"5"

127.0.0.1:6379> LRANGE list3 0 -1

1) "5"

2) "1"

3) "2"

4) "3"

5) "4"

6) "5"

7) "6"

127.0.0.1:6379>

J)lindex  键  下标 获取队列中指定下标元素的值

127.0.0.1:6379> LRANGE list3 0 -1

1) "5"

2) "1"

3) "2"

4) "3"

5) "4"

6) "5"

7) "6"

127.0.0.1:6379> lindex list3 0

"5"

127.0.0.1:6379>

K)llen  键   获得队列的长度

127.0.0.1:6379> llen list3

(integer) 7

127.0.0.1:6379>

5) sets类型和操作

Set是集合,它是string类型的无序集合。对集合我们可以取并集、交集、差集。通过这些操作我们可以实现社交网站中的好友推荐和blog的tag功能。集合不允许有重复值。

A) sadd  键  值1[值2…]

添加一个或多个元素到集合中

127.0.0.1:6379> sadd jihe aa bb cc dd

(integer) 4

127.0.0.1:6379>

B) smembers  键    获取集合里面所有的元素

127.0.0.1:6379> smembers jihe

1) "dd"

2) "bb"

3) "aa"

4) "cc"

127.0.0.1:6379>

C) srem  键  值1[值2…]   从集合中删除指定的一个或多个元素

(删除键,依然使用“del 键” 命令)

127.0.0.1:6379> srem jihe aa bb

(integer) 2

127.0.0.1:6379> smembers jihe

1) "dd"

2) "cc"

127.0.0.1:6379>

D) spop  键   随机从集合中删除一个元素,并返回

127.0.0.1:6379> smembers jihe

1) "cc"

2) "ff"

3) "dd"

4) "gg"

5) "ee"

6) "tt"

7) "rr"

127.0.0.1:6379> spop jihe

"ee"

127.0.0.1:6379> spop jihe

"rr"

127.0.0.1:6379>

E) srandmember  键  值 随机返回集合中一个元素,但不删除

127.0.0.1:6379> SRANDMEMBER jihe

"gg"

127.0.0.1:6379> SRANDMEMBER jihe

"ff"

F) scard  键 获取集合里面元素个数

127.0.0.1:6379> scard jihe

(integer) 5

127.0.0.1:6379>

G) sismember  键  值

确定一个指定的值是否是集合中的元素

127.0.0.1:6379> smembers jihe

1) "ff"

2) "dd"

3) "gg"

4) "cc"

5) "tt"

127.0.0.1:6379> SISMEMBER jihe ii

(integer) 0

127.0.0.1:6379> SISMEMBER jihe tt

(integer) 1

127.0.0.1:6379>

H) sdiff  集合1  集合2         返回集合1与集合2的差集。以集合1为主

127.0.0.1:6379> sadd jihe1 1 2 3 4

(integer) 4

127.0.0.1:6379> sadd jihe2  2 3 4 5

(integer) 4

127.0.0.1:6379> sdiff jihe1 jihe2

1) "1"

127.0.0.1:6379>

I) sdiffstore  新集合  集合1  集合2

返回集合1和集合2的差集,并把结果存入新集合

127.0.0.1:6379> sdiffstore xinjihe jihe1 jihe2

(integer) 1

127.0.0.1:6379> SMEMBERS xinjihe

1) "1"

127.0.0.1:6379>

J) sinter  集合1  集合2(jihe1:1 2 3 4;jihe2:2 3 4 5)

获得两个集合的交集

127.0.0.1:6379> sinter jihe1 jihe2

1) "2"

2) "3"

3) "4"

127.0.0.1:6379>

K) sinterstore  新集合  集合1  集合2

获得集合1和集合2的交集,并把结果存入新集合

127.0.0.1:6379> SINTERSTORE xinjihe1 jihe1 jihe2

(integer) 3

127.0.0.1:6379> SMEMBERS xinjihe1

1) "2"

2) "3"

3) "4"

127.0.0.1:6379>

12) sunion  集合1  集合2

获得指定集合的并集

127.0.0.1:6379> sunion jihe1 jihe2

1) "1"

2) "2"

3) "3"

4) "4"

5) "5"

127.0.0.1:6379>

13) sunionstore  新集合  集合1  集合2

获得指定集合的并集,并把结果保存如新集合

127.0.0.1:6379> sunionstore xinjihe3 jihe1 jihe2

(integer) 5

127.0.0.1:6379> SMEMBERS xinjihe3

1) "1"

2) "2"

3) "3"

4) "4"

5) "5"

127.0.0.1:6379>

14) smove  源集合  目标集合  值

将指定的值从源集合移动到目标集合

127.0.0.1:6379> SMOVE jihe1 jihe2 1

(integer) 1

127.0.0.1:6379> SMEMBERS jihe2

1) "1"

2) "2"

3) "3"

4) "4"

5) "5"

127.0.0.1:6379> SMEMBERS jihe1

1) "2"

2) "3"

3) "4"

127.0.0.1:6379>

Redis部署与基本操作的更多相关文章

  1. 第1讲 Redis部署与基本操作

    目录 一.简介 二.安装 1.默认安装位置 2.指定安装位置 3.安装的可执行文件的作用 三.启动与关闭 四.配置文件 五.Redis的数据类型 1. 共计5种类型 2. String(子串类型) 3 ...

  2. Nginx+redis部署tomcat集群

    一.部署环境: 两个tomcat实例部署在Ubuntu 14上,IP地址分别为192.168.1.110和192.168.1.111,Nginx和redis部署在windows7上,IP地址为192. ...

  3. Redis数据类型的基本操作

    Redis数据类型的基本操作 一.string类型 1.设置value

  4. redis部署问题

    在部署redis哨兵的时候,一开始一直都是失败:杀死master进程后,没有选出新的master 日志如下 9985:X 18 Feb 20:14:42.409 # +sdown master mym ...

  5. Redis 部署方式(单点、master/slaver、sentinel、cluster) 概念与区别

    转载自 https://blog.csdn.net/java_zyq/article/details/83818341 在K8S上部署Redis集群时突然遇到一个(sentinel哨兵模式)概念,感觉 ...

  6. Operator 示例:使用 Redis 部署 PHP 留言板应用程序

    「Kubernetes 官方示例:使用 Redis 部署 PHP 留言板应用程序」Operator 化. 源码仓库:https://github.com/jxlwqq/guestbook-operat ...

  7. nginx + tomcat + redis 部署项目,解决session共享问题。

    最近自己搭了一套nginx的环境,集群部署了公司的一个项目,中间解决了session共享的问题.记录如下,以备日后查看. 1.环境 windows10 家庭中文版,jdk 7, tomcat 7.0. ...

  8. Redis 部署主从哨兵 C#使用,实现自动获取redis缓存 实例1

    源码示例下载链接: https://pan.baidu.com/s/1eTA63T4 密码: un96 实现目标:windows 下安装 一台master服务 一台salve redis服务器 并且哨 ...

  9. Redis部署说明

    一.普通部署 将Redis-x64-3.2.100解压,修改配置文件,一般不需要修改,直接使用默认,具体要修改可自行百度. 打开命令行,定位到解压目录,执行命令: redis-server.exe r ...

随机推荐

  1. Lab 1-4

    Analyze the file Lab01-04.exe. Questions and Short Answers Upload the Lab01-04.exe file to http://ww ...

  2. You Don't Know JS: this & Object Prototypes( 第2章 this)

    this is a binding made for each function invocation, based entirely on its call-site (how the functi ...

  3. JavaScript动态加载资源

    //动态加载样式 function dynamicLoadingCss(path){ if(!path || path.length === 0){ return false; } var head ...

  4. windows下如何通过git bash获取gitlab ssh公钥

    Gitlab1. 安装git,从程序目录打开 "Git Bash" 2. 键入命令:ssh-keygen -t rsa -C "email@email.com" ...

  5. 5月30---6月2 DedeCMS以及动态仿站

    什么是DedeCMS 织梦内容管理系统(DedeCMS),是一个集内容发布.编辑.管理检索等于一体的网站管理系统(Web CMS),他拥有国外CMS众多特点之外,还结合中国用户的需要,对内容管理系统概 ...

  6. arguments.callee用法

    arguments.callee 在哪一个函数中运行,它就代表哪一个函数. 一般用在匿名函数中. 在匿名函数中有时会需要自己调用自己,但是由于是匿名函数,没有名子,无名可调. 这时就可以用argume ...

  7. Convex Fence

    Convex Fence I have a land consisting of n trees. Since the trees are favorites to cows, I have a bi ...

  8. 十二、持久层框架(MyBatis)

    一.PageHelper分页插件的使用 PageHelper是一款MyBatis的分页插件,只需要简单的配置,然后直接调用方法就可以. 1.配置PageHelper插件 在mybatis-config ...

  9. python 解析与生成xml

    xml.etree.ElementTree模块为xml文件的提取和建立提供了简单有效的API.下文中使用ET来代表xml.etree.ElementTree模块. XML是一种内在的分层的数据形式,展 ...

  10. 关于jsp页面的一些知识(一)

    1,<%@ include file=” ”%> ——最简洁易懂的解释 http://blog.csdn.net/little_stars/article/details/17373477 ...