PHP开发工程师@温州。博客关于:技术、生活、读书、互联网。

redis学习笔记

前言

Redis是一个开源、支持网络、基于内存、键值对存储的noSql数据库,使用ANSI C编写。

目前各大公司都使用了redis作为其缓存数据库,如新浪微博、twitter、stackoverflow 、GitHub等。


redis安装

      

tar -zxvf redis.tar.gz

cd redis

make

cd src && make install

mkdir ../bin

cp redis-cli redis-server redis-check-aof redis-check-dump redis-sentinel ../bin


配置文件常用配置

daemonize 是否后台运行

pidfile    配置多个pid地址

bind   绑定id,绑定后只接受该ip的请求

port   监听端口(默认6379)

timeout  设置客户端连接超时时间,单位秒

loglevel  分为4级,debug、verbose、notice、warning

logfile  配置文件地址

database  设置数据个数

save   使用redis进行数据库镜像的频率

dir   数据库镜像备份文件放置目录

slaveof 设置该数据库为其他数据库的从数据库

masterauth  主数据库连接需要的密码验证

requirepass 设置登录密码

maxclients 设置同时连接的客户端数量

maxmemory 设置redis能使用的最大内存

vm-enabled 是否开启虚拟内存


启动redis

./redis-server /usr/app/redis/redis.conf

 

查看redis进程:
ps -ef | grep redis


停止redis

pkill redis-server

 

进入redis客户端

./redis-cli


redis支持的数据类型

  • 字符串 string

  •  哈希 hash

  •  链表 list

  •  集合 set

  •  有序集合 zset


string类型常见操作

set name aa                   //设置键对应的值为string类型的值

setnx name bb              //如果键不存在则设置值(nx=not exist)

setex name 60 cc          //设置值并指定有效期  

setrange name 3 dd       //将键从第3个下标开始替换 

mset name1 yy name2 xx //设置多个值

msetnx name1 yy name2 xx //设置多个值(如果有一个键已存在则全设置失败)

get name                        //获取name的值

getset name a                //获取旧值设置新的值

getrange name 0 5        //取值从下标0到5

mget name1 name2       //获取多个值

incr number                   //自增1

incrby number 5           //自增5次

decr number                 //自减1

decrby number 5          //自减5次

append  name aa          //给字符串追加值

strlen name                   //获取字符串长度


hash类型常见操作

hset user1 name hello        //设置名为user的哈希表键为name值为hello

hget user1 name               //获取user哈希表里的name值

hsetnx user1 name hello    //如果键不存在则设置值

hmset user1 name hello age 10 //为哈希表设置多个值  

hmget user1 name age             //获取多个值

hincrby user1 age 5          //为哈希表里age加5

hexist user1 name            //判断字段是否存在

hlen user1                        //返回字段个数

hdel user1 name              //删除字段

hkeys user1                     //返回所有字段

hvals user1                      //返回所有值

hgetall user1                    //获取所有键和值


list类型常见操作

lpush mylist hello            //向list左边添加一个元素(相当于栈,先进后出)

rpush mylist hello           //向list右边添加一个元素(相当于队列,先进先出)

lpop mylist                     //弹出左边第一个元素

rpop mylist                    //弹出右边一个元素

rpoplpush list1 list2        //从链表弹出元素给另一个链表 

linsert mylist before hello world //在特定位置添加值

lset mylist 1 world         //改变下标为1的值 

lrem mylist 1 hello         //删除一个相同的值

ltrim mylist  1 2             //保留范围里的值,其他删除

lrange mylist 0 -1          //从头到尾取值

lindex mylist 1               //返回索引位置的值

llen mylist                      //返回链表个数个数


set类型常见操作

sadd myset "hello"         //向集合中添加一个元素

srem myset "hello"         //删除集合中的元素

spop myset                    //随机弹出一个元素

sdiff myset1 myset2       //返回2个集合中的差集

sdiffstore myset1 myset2 myset3 //将myset2和myset3的差集存到myset1里

sinter myset1 myset2     //返回2个集合中的交集

sinterstore s1 s2 s3        //将交集存到s1里

sunion s1 s2                  //返回并集

sunionstore s1 s2 s3     //将并集存到s1里

smove s1 s2 "hello"      //将s1里的hello移动到s2

smembers s1                //返回集合里的元素

scard s1                       //返回集合里元素个数

sismember s1 "one"    //判断元素是否属于集合

srandmember s1          //随机返回一个元素,但不删除


zset类型常见操作

zadd z1 1 hello          //插入一个元素,顺序为1

zrem z1 hello             //删除元素

zincrby z1 2 one       //元素已存在则增加顺序号,不存在则添加元素

zrank z1 one            //排序之后返回该元素索引

zrevrank z1 one       //降序排序之后返回该元素索引

zrange z1 0 -1         //按索引返回

zcard z1                  //返回集合中元素个


数据库相关命令

auth 123456         //验证密码

keys  t*                //获取当前数据库t开头的键

exists name          //判断当前库是否有这个键

del name              //删除一个键

expire name 10    //设置一个键过期时间

persist name        //取消过期时间

ttl name               //查看过期时间

select 0                //选择数据库 0为默认数据库(0-15)

move age 1          //移动age键到1数据库

randomkey           //随机返回一个键

rename n1 n2      //重命名

flushdb                //清空当前数据库

flushall                 //清空所有数据库

type name          //返回键类型

dbsize                //返回键的数量

ping                    //测试连接是否正常

echo                   //打印一些内容

quit                     //退出

info                     //获取redis一些信息

config get *        //获取配置



评论

© yuankeqiang | Powered by LOFTER