一、基础知识
Redis是什么就不多说了,这篇博客说一下Redis的一些常见操作
安装:
1、下载地址https://github.com/dmajkic/redis/downloads。
下载到的Redis支持32bit和64bit。根据自己实际情况选择,我选择32bit。把32bit文件内容拷贝到需要安装的目录下,比如:D:\dev\redis-2.4.5。打开一个cmd窗口,使用cd命令切换到指定目录(D:\dev\redis-2.4.5)运行 redis-server.exe redis.conf 。运行以后出现如下界面。
2、这就说明Redis服务端已经安装成功。
重新打开一个cmd窗口,使用cd命令切换到指定目录(D:\dev\redis-2.4.5)运行redis-cli.exe -h 127.0.0.1 -p 6379,其中127.0.0.1是本地ip,6379是redis服务端的默认端口。运行成功如下图所示。
3、通过自定义bat启动
类似mongoDB那样,将服务路径配置到环境变量中
1、将D:\test\redis\32bit 添加到path中
2、编写脚本
redis-start.bat
redis-server.exe
redis-client.bat
redis-cli.exe -h 127.0.0.1 -p 6379
二、数据类型
String类型
常用操作
1、set和get set admin "leilei" 设置key为admin的value为leilei get admin 获取admin的value 2、setnx命令,如果存在返回0,如果不存在返回1 3、mset和mget mset name "leilei" age 25 sex "man" mget name age sex 1) "leilei" 2) "25" 3) "man" 4、setex,指定键值对应的有效期 setex name 10 leilei 设置name 有效期为10秒 redis 127.0.0.1:6379> get name "leilei" redis 127.0.0.1:6379> get name (nil) 5、setrange,从某位置开始,替换字符串,如果要替换的字符串长度超过原来的,全部替换,否则,会保留一部分原来的字符串 set email zllaptx4869@163.com OK get email "zllaptx4869@163.com" setrange email 12 qq.com 从第12位开始,替换字符串 (integer) 19 redis 127.0.0.1:6379> get email "zllaptx4869@qq.comm" 6、incr,递增,必须是Integer类型 get age "28" incr age (integer) 29 7、incrby,一次递增多少 语法:incrby key integer get age "31" incrby age 2 (integer) 33 8、decr 和decrby 递减操作 get age "30" decr age (integer) 29 decrby age 9 (integer) 20 9、append,追加 get email "zllaptx4869@qq.comm" append email 123 (integer) 22 get email "zllaptx4869@qq.comm123" 10、strlen,获取key的长度 strlen email (integer) 22
Hash类型,适合存取对象
常用操作
1、hset和hget 很挫的写法 hset person name leilei ————设置hash表名称为person中的一个name 属性为leilei (integer) 1 (2.35s) hset person age 23 (integer) 1 hset person sex 男 (integer) 1 hget person sex "\xc4\xd0" hget person name "leilei" hget person age "23" 标准写法: 设置 person中编号为001的person的name age 和sex hset person:001 name leilei (integer) 1 hset person:001 age 23 (integer) 1 hset person:001 sex man (integer) 1 获取 hget person:001 name "leilei" hget person:001 age "23" hmget person:001 age sex name 1) "23" 2) "man" 3) "leilei" 2、hsetnx,同理setnx 3、hmset和hmget,同理mset和mget 4、hincrby同理incrby 5、hexists,判断key是否存在,如果存在,返回1,不存在返回0 hexists person:001 name (integer) 1 hexists person:001 big (integer) 0 6、 hlen,获取某个hash表的长度 hlen person:001 (integer) 3 7、hdel,删除hash表中的某个字段 hkeys person:001 1) "name" 2) "age" 3) "sex" hdel person:001 sex (integer) 1 hkeys person:001 1) "name" 2) "age" 8、hkeys 获取hash表中的所有keys hkeys person:001 1) "name" 2) "age" 3) "sex" 9、hvals 获取hash表中的所有values hkeys person:001 1) "name" 2) "age" hvals person:001 1) "leilei" 2) "25" 10、hgetall 获取key和value hgetall person:001 1) "name" 2) "leilei" 3) "age" 4) "25"
List双向链表结构
常用操作
1、lpush 从头部添加元素——栈 lpush mylist user1 (integer) 1 lpush mylist user2 (integer) 2 lpush mylist user3 (integer) 3 lrange mylist 0 -1 1) "user3" 2) "user2" 3) "user1" 2、lrange mylist 0 -1 表示,取正序第一个到倒序第一个,也就是全的链表中的全部数据 3、rpush 从尾部添加元素——队列 rpush mylist user4 (integer) 4 lrange mylist 0 -1 1) "user3" 2) "user2" 3) "user1" 4) "user4" 4、linsert 从中间插入,都是针对出来的顺序而言的 before: linsert mylist before "user1" "user7" 在user1前面插入user7 (integer) 7 (2.31s) lrange mylist 0 -1 1) "user3" 2) "user2" 3) "user7" 4) "user1" 5) "user4" 6) "user5" 7) "user6" after: linsert myduilie after user3 user5 (integer) 5 lrange myduilie 0 -1 1) "user1" 2) "user4" 3) "user2" 4) "user3" 5) "user5" 5、lset,针对出来的顺序而言 lset myduilie 0 user8 设置myduilie的第一个元素为user8 OK lrange myduilie 0 -1 1) "user8" 2) "user4" 3) "user2" 4) "user5" 5) "user3" 6、lrem,从list中删除n个指定元素 rpush myduilie user1 (integer) 1 rpush myduilie user2 (integer) 2 rpush myduilie user3 (integer) 3 rpush myduilie user1 (integer) 4 lrange myduilie 0 -1 1) "user1" 2) "user2" 3) "user3" 4) "user1" lrem myduilie 1 user1 从队列中删除1个user1 (integer) 1 lrem myduilie 1 user1 (integer) 1 lrem myduilie 1 user1 (integer) 0 rpush myduilie user1 rpush myduilie user1 rpush myduilie user1 lrem myduilie 3 user1 从队列中删除3个user1 7、ltrim,保留指定范围内的数据 lrange myzhan 0 -1 1) "user5" 2) "user4" 3) "user3" 4) "user2" 5) "user1" ltrim myzhan 2 -1 保存下标2开始到最后的一个元素 OK lrange myzhan 0 -1 1) "user3" 2) "user2" 3) "user1" 8、lpop,从list的头部删除元素,并返回删除的元素,这里的头部指的是出来的地方 1) "user4" 2) "user3" 3) "user2" 4) "user1" lpop myzhan "user4" lrange myzhan 0 -1 1) "user3" 2) "user2" 3) "user1" 9、rpop,从list的尾部删除元素 10、lindex,查看索引对应的key lrange myduilie 0 -1 1) "user1" 2) "user2" 3) "user3" 4) "user4" lindex myduilie 0 "user1" lindex myduilie 1 "user2"
Set类型
常用操作
1、sadd 添加元素 sadd myset user1 sadd myset user2 sadd myset user3 2、smembers 查看元素 smembers myset 1) "user1" 2) "user2" 3) "user3" 3、srem 删除元素 srem myset user1 (integer) 1 smembers myset 1) "user2" 2) "user3" 4、spop 随机删除set中的一个key,并返回该key spop myset "user3" 5、sdiff 返回差集 redis 127.0.0.1:6379> sadd myset1 user1 (integer) 1 redis 127.0.0.1:6379> sadd myset1 user2 (integer) 1 redis 127.0.0.1:6379> sadd myset1 user3 (integer) 1 redis 127.0.0.1:6379> sadd myset1 user4 (integer) 1 redis 127.0.0.1:6379> sadd myset2 user3 (integer) 1 redis 127.0.0.1:6379> sadd myset2 user4 (integer) 1 redis 127.0.0.1:6379> sadd myset2 user5 (integer) 1 redis 127.0.0.1:6379> sdiff myset1 myset2 1) "user1" 2) "user2" redis 127.0.0.1:6379> sdiff myset2 myset1 1) "user5" 6、sdiffstore 返回差集并存储到另一个set中去 sdiffstore myset4 myset2 myset1 返回myset2与myset1的差集,并将结果存取到myset4中 (integer) 1 smembers myset4 1) "user5" 7、sinter 交集 8、sinterstore 交集并存放结果 sinter myset1 myset2 1) "user4" 2) "user3" sinterstore myset3 myset1 myset2 (integer) 2 smembers myset3 1) "user4" 2) "user3" 9、sunion 并集 10、sunionstore 并集并存放结果 sunion myset1 myset2 1) "user2" 2) "user3" 3) "user4" 4) "user5" 5) "user1" sunionstore myset5 myset1 myset2 (integer) 5 smembers myset5 1) "user2" 2) "user3" 3) "user4" 4) "user5" 5) "user1" 11、smove 从第一个set中移除,并放到第二个set中 smove myset1 myset2 user1 (integer) 1 将user1从myset1中移除,并放入到myset2中 12、scard 查看集合元素个数 scard myset3 (integer) 2 scard myset4 (integer) 1 scard myset5 (integer) 5 13、sismember 判断是不是集合中的元素 sismember myset1 leilei (integer) 0 14、srandmember 随机返回一个元素,不删除 srandmember myset1 "user4"
ZSet类型
常用操作
1、zadd 添加 zadd myzset 1 user1 (integer) 1 zadd myzset 2 user2 (integer) 1 2、zrang 取值 zrange myzset 0 -1 1) "user1" 2) "user2" zrange myzset 0 -1 withscores 输出顺序号 1) "user1" 2) "1" 3) "user2" 4) "2" 3、zrem 移除 zrem myzset user1 (integer) 1 4、zincrby 递增,如果元素存在,顺序号+1 如果元素不存在,向集合中添加 zincrby myzset 2 leilei "2" zrange myzset 0 -1 1) "leilei" 2) "user2" 又一次执行命令 zincrby myzset 2 leilei "4" zrange myzset 0 -1 withscores 1) "user2" 2) "2" 3) "leilei" 4) "4" 5、zrank 排序之后返回key的索引 zrank myzset user2 (integer) 1 zrange myzset 0 -1 withscores 1) "admin" 2) "1" 3) "user2" 4) "2" 5) "nana" 6) "3" 7) "leilei" 8) "4" zrank myzset nana (integer) 2 6、zrevrank 反转排序并取得key对应的索引 7、zrankbyscore 取范围内的 8、zcount 返回集合中的score给定区间的数量 9、zcard 返回集合数量
三、未完待续
这篇只是简单的说了一下Redis的常用操作,下篇说一下redis的高级操作,包括持久化,主从复制等