Redis 笔记

Redis 笔记

启动Redis

1.先找到redis.conf当前目录
再输入redis-server liconfig/redis.conf来运行redis
2.输入redis-cli -p 6379进入命令
3.输入ping

操作Redis

String命令

set name li #设置key value
get name   ##获得value
keys *   ##获得所有key
EXISTS name  #判断该key是否存在
move  name 1 #移动当前的key到1库
del name ## 删除当前key 
EXPIRE name 10 #倒计时删除key  当前为10s
ttl name  #可以当前key的剩余时间,当为-2的时候,即被删除
type name #查看当前key的类型
APPEND name hello #往当前key的value后面追加hello,如果当前key不存在,则会自动添加一个key,相当于set
set age 10
incr age  #让age+1
incrby age 1
decr age  #让age-1
decrby age 1
getrange name 0 3 #截取字符串
setrange name 1 xx #改变指定下角标字符为xx
setex(set with expire) #设置key并附带过期时间
setex name 30 li 
setnx(set if not exist) #该key不存在则设置,如果存在则不会设置成功
mset k1 v1 k2 v2 k3 v3#设置多个key value
mget k1 k2 k3 #获得多个key的value
127.0.0.1:6379> set user:1 {name:zhangsan,age:3} #设置一个对象,编号为1
OK
127.0.0.1:6379> get user:1
"{name:zhangsan,age:3}"
127.0.0.1:6379> get user
(nil)
127.0.0.1:6379> mset user:2:name lisi user:2:age 3#同理用mset设置一个对象,编号为2
OK
127.0.0.1:6379> get user
(nil)
127.0.0.1:6379> mget user:2:name user:2:age
1) "lisi"
2) "3"
127.0.0.1:6379> getset db redis #先获得原来的值,再设置新的值
(nil)
127.0.0.1:6379> get db
"redis"
127.0.0.1:6379> getset db mongdb
"redis"
127.0.0.1:6379> get db
"mongdb"

不会的命令可以到中文官网查: http://www.redis.cn/commands.html

List命令

所有list命令都是l开头

127.0.0.1:6379> lpush list one #将一个值或多个值,放入队列,从左边放入
(integer) 1
127.0.0.1:6379> lpush list two
(integer) 2
127.0.0.1:6379> lpush list three
(integer) 3
127.0.0.1:6379> lrange list 0 -1#获取list全部的值
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> lrange list 0 1
1) "three"
2) "two"
127.0.0.1:6379> rpush list right#将一个值或多个值,从右边放入队列
(integer) 4
127.0.0.1:6379> lrange list 0 -1 
1) "three"
2) "two"
3) "one"
4) "right"
127.0.0.1:6379> lpop list#从左边移除队列第一个元素
"three"
127.0.0.1:6379> rpop list#从右边移除队列第一个元素
"right"
##list可以理解为是一个双向列表,l是队头,r是队尾,redis支持队列操作队列,队尾
127.0.0.1:6379> lrange list 0 -1
1) "four"
2) "three"
3) "two"
4) "one"
127.0.0.1:6379> lindex list 1 #得到指定下标的值
"three"
======================================
127.0.0.1:6379> lrange list 0 -1
1) "one"
2) "three"
3) "four"
4) "three"
5) "two"
6) "one"
127.0.0.1:6379> lrem list 1 one #删除一个one
(integer) 1
127.0.0.1:6379> lrange list 0 -1
1) "three"
2) "four"
3) "three"
4) "two"
5) "one"
127.0.0.1:6379> lrem list 2 three #删除两个three
(integer) 2
127.0.0.1:6379> lrange list 0 -1
1) "four"
2) "two"
3) "one"
==================================
127.0.0.1:6379> lrange list 0 -1
1) "hello"
2) "hello1"
3) "hello2"
4) "hello3"
5) "hello4"
127.0.0.1:6379> ltrim list 1 2#通过下标截取指定的长度,这个list被改变,只剩下截取下来的元素
OK
127.0.0.1:6379> lrange list 0 -1
1) "hello1"
2) "hello2"
127.0.0.1:6379> rpoplpush list mylist#将原来list中的元素弹出,放入另一个列表mylist中
"hello2"
127.0.0.1:6379> lrange list 0 -1
1) "hello1"
127.0.0.1:6379> lrange mylist 0 -1
1) "hello2"
================================
127.0.0.1:6379> lset list 0 item #将列表中指定下标的值图换位另外一个值
OK
127.0.0.1:6379> lrange list 0 -1
1) "item"
127.0.0.1:6379> lset list 1 other #如果该下标不存在,则会报错
(error) ERR index out of range
=======================
127.0.0.1:6379> lrange list 0 -1
1) "item"
127.0.0.1:6379> linsert list before item other #在列表指定元素之前插入数据
(integer) 2
127.0.0.1:6379> lrange list 0 -1
1) "other"
2) "item"
127.0.0.1:6379> linsert list after item after#在指定元素之后插入数据
(integer) 3
127.0.0.1:6379> lrange list 0 -1
1) "other"
2) "item"
3) "after"

set集合

127.0.0.1:6379> sadd myset hello #往set里添加参数
(integer) 1
127.0.0.1:6379> sadd myset world
(integer) 1
127.0.0.1:6379> sadd myset li
(integer) 1
127.0.0.1:6379> smembers myset#获取set集合元素
1) "hello"
2) "world"
3) "li"
127.0.0.1:6379> sismember myset li#查询指定元素在不在set集合中
(integer) 1
127.0.0.1:6379> sismember myset lir
(integer) 0
======================================
127.0.0.1:6379> scard myset#获得set集合元素个数
(integer) 3
127.0.0.1:6379> srem myset 1
(integer) 0
127.0.0.1:6379> smembers myset
1) "hello"
2) "world"
3) "li"
127.0.0.1:6379> srem myset hello #移除指定元素,不可以用下角标
(integer) 1
127.0.0.1:6379> smembers myset
1) "world"
2) "li"
=====================================
set 是一个无序不重复的集合,所以操作几乎都是无序的

127.0.0.1:6379> SRANDMEMBER myset #随机抽选出一个元素
1) "world"
127.0.0.1:6379> SRANDMEMBER myset 1#随机抽选出指定个数元素
1) "li"
127.0.0.1:6379> SRANDMEMBER myset 1
1) "li"
=================================127.0.0.1:6379> sadd myset 1
(integer) 1
127.0.0.1:6379> sadd myset 12
(integer) 1
127.0.0.1:6379> sadd myset 123
(integer) 1
127.0.0.1:6379> sadd myset 1234
(integer) 1
127.0.0.1:6379> SMEMBERS myset#set是无序
1) "1"
2) "li"
3) "world"
4) "123"
5) "1234"
6) "12"
127.0.0.1:6379> spop myset#随机删除一个元素
"123"
127.0.0.1:6379> SMEMBERS myset
1) "world"
2) "1"
3) "1234"
4) "12"
5) "li"
==========================
127.0.0.1:6379> smove myset set li#将指定元素移动到另一个set集合中
(integer) 1
127.0.0.1:6379> SMEMBERS myset
1) "world"
2) "1"
3) "1234"
4) "12"
127.0.0.1:6379> SMEMBERS set
1) "li"
======================================
127.0.0.1:6379> sadd key1 a
(integer) 1
127.0.0.1:6379> sadd key1 b
(integer) 1
127.0.0.1:6379> sadd key2 c
(integer) 1
127.0.0.1:6379> sadd key2 d
(integer) 1
127.0.0.1:6379> SDIFF key1 key2#差集key1中相对于key2的差集
1) "a"
2) "b"
127.0.0.1:6379> sadd key2 b
(integer) 1
127.0.0.1:6379> SINTER key1 key2#交集
1) "b"
127.0.0.1:6379> SUNION key1 key2#并集
1) "a"
2) "c"
3) "d"
4) "b"

Hash

Map集合,key-Map(key-{key,value})

127.0.0.1:6379> hmset myhash field1 hello field2 world
OK
127.0.0.1:6379> hgetall myhash
1) "field1"
2) "hello"
3) "field2"
4) "world"
127.0.0.1:6379> hlen myhash#获取hash表的字段数量
(integer) 2
=======================================
127.0.0.1:6379> HEXISTS myhash field1#判断指定字段是否存在
(integer) 1
127.0.0.1:6379> HEXISTS myhash field3
(integer) 0
127.0.0.1:6379> hkeys myhash#获得所有的field
1) "field1"
2) "field2"
127.0.0.1:6379> hvals myhash#获得所有的value
1) "hello"
2) "world"
=====================================
127.0.0.1:6379> hmset user:1 name zhangsan  age 3
OK
127.0.0.1:6379> hget user:1 name
"zhangsan"
127.0.0.1:6379> hget user:1 age
"3"

Zset(有序集合)

在set基础上,增加了一个值,set k1 v1 zset k1 score v1

127.0.0.1:6379> zadd key 1 one
(integer) 1
127.0.0.1:6379> zadd key 2 two 3 three
(integer) 2
127.0.0.1:6379> zrange key 0 -1
1) "one"
2) "two"
3) "three"
==========================================
127.0.0.1:6379> zadd name 25000 xiaohong #添加三个元素
(integer) 1
127.0.0.1:6379> zadd name 2000 xiaoming
(integer) 1
127.0.0.1:6379> zadd name 200 zhangsan
(integer) 1
127.0.0.1:6379> ZRANGEBYSCORE name -inf +inf#按负无穷和正无穷范围
1) "zhangsan"
2) "xiaoming"
3) "xiaohong"
127.0.0.1:6379> ZRANGEBYSCORE name -inf +inf withscores #排序并带score
1) "zhangsan"
2) "200"
3) "xiaoming"
4) "2000"
5) "xiaohong"
6) "25000"
127.0.0.1:6379> ZRANGEBYSCORE name -inf 2000  withscores #负无穷到 2000
1) "zhangsan"
2) "200"
3) "xiaoming"
4) "2000"
127.0.0.1:6379> ZREVRANGE name 0 -1 withscores#从大到小排序
1) "xiaohong"
2) "25000"
3) "xiaoming"
4) "2000"
5) "zhangsan"
6) "200"


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值