redis基础应用

  • 初识redis
redis默认是没有账号密码的,本地没有设置账号密码
查看是否启动redis:ps -ef|grep redis
redis的启动:redis-server
redis的测试:redis-cli
例如:set 666 123 ###设置键对值,键666,值123
     get 666     ###获取键的值,输出123
set key value     设置 key 的值
get key             获取 key 的值
exists key       查看此 key 是否存在
keys *             查看所有的 key
flushall     消除所有的 key
有时候会有中文乱码。要在 redis-cli 后面加上 --raw
连接redis:redis-cli -h 127.0.0.1 -p 6379
  • 数据类型之字符串(string)
setnx 如果这个key存在返回0,否则返回1,返回0时不能覆盖值
setex 这是过期时间 sex key time value
setrange 设置指定key的value值的子字符串,setrange key 下标 替换内容
127.0.0.1:6379> get ceshi
"wo"
127.0.0.1:6379> setrange name 1 222
(integer) 4
127.0.0.1:6379> get name
"3222"

mset 设置多个 mset key1 value1 key2 value2
127.0.0.1:6379> mset key1 key1 key2 key2
OK
127.0.0.1:6379> get
(error) ERR wrong number of arguments for 'get' command
127.0.0.1:6379> get key1
"key1"
127.0.0.1:6379> get key2
"key2"

msetnx 批量设置,如果这个key存在,所有的不成功,反之,类似事务操作
127.0.0.1:6379> msetnx key3 key3 key4 key4
(integer) 1
127.0.0.1:6379> msetnx key4 key4 key5 key5
(integer) 0

getset 获取这个key的旧值,并且设置新值
127.0.0.1:6379> get ceshi
"wo"
127.0.0.1:6379> getset ceshi 9999
"wo"
127.0.0.1:6379> get ceshi
"9999"

getrange 或者指定的下标的值 getrange key 开始下标 结束下标
127.0.0.1:6379> get ceshi
"9999"
127.0.0.1:6379> getrange ceshi 0 2
"999"

mget 批量获取key的值 mget key1 key2 key3
127.0.0.1:6379> mget key1 key2 key3
1) "key1"
2) "key2"
3) "key3"


incr 自增,incrby 增加指定的值(负就是减)
decr 自减,decrby 减去指定的值(负就是加)
127.0.0.1:6379> get ceshi
"9999"
127.0.0.1:6379> incr ceshi
(integer) 10000
127.0.0.1:6379> incrby ceshi 20
(integer) 10020
127.0.0.1:6379> incrby ceshi -10
(integer) 10010
127.0.0.1:6379> decr ceshi
(integer) 10009
127.0.0.1:6379> decr ceshi
(integer) 10008
127.0.0.1:6379> decrby ceshi 4
(integer) 10004
127.0.0.1:6379> decrby ceshi -4
(integer) 10008

append 追加内容 append key value
127.0.0.1:6379> get name
"tom"
127.0.0.1:6379> append name .com
(integer) 7
127.0.0.1:6379> get name
"tom.com"

strlen 获取key的长度
127.0.0.1:6379> get name
"tom.com"
127.0.0.1:6379> strlen name
(integer) 7
  • 数据类型之哈希(hashes)
hset 设置hash    hset myhahs field1 hello
//user:001 -> 表    name -> 字段   zhangsan -> value
127.0.0.1:6379> hset user:001 name zhangsan
(integer) 1

hget 获取hash的value
127.0.0.1:6379> hget user:001 name
"zhangsan"

hsetnx 和string中setnx大同小异
127.0.0.1:6379> hsetnx user:001 name lisi
(integer) 0
127.0.0.1:6379> hsetnx user:002 name lisi
(integer) 1
127.0.0.1:6379> hget user:002 name
"lisi"
127.0.0.1:6379> hget user:001 name
"zhangsan"

hmset 批量设置(同上mset) hmset 表名 字段1 value1 ziduan2 value2 字段3 value3
127.0.0.1:6379> hmset user:003 name sinan age 25 sex 1
OK
127.0.0.1:6379> hget user:003 name
"sinan"
127.0.0.1:6379> hget user:003 age
"25"
127.0.0.1:6379> hget user:003 sex
"1"

hmget 批量获取hash(同上mget)
127.0.0.1:6379> hmget user:003 name age sex
1) "sinan"
2) "25"
3) "1"

hexists 判断这个key是否存在,1存在,0不存在
127.0.0.1:6379> hmget user:003 name age sex
1) "sinan"
2) "25"
3) "1"
127.0.0.1:6379> hexists user:003 name
(integer) 1
127.0.0.1:6379> hexists user:003 age
(integer) 1
127.0.0.1:6379> hexists user:003 sex
(integer) 1
127.0.0.1:6379> hexists user:003 sex1
(integer) 0

hlen 获取当前hash表中的key的数量,也就是字段的数量
127.0.0.1:6379> hlen user:003
(integer) 3

hdel 删除hash表中指定的key(字段)
hkeys 返回hsah表中所有的key (字段)
hvals 返回hash表中所有的value
127.0.0.1:6379> hlen user:003
(integer) 3
127.0.0.1:6379> hdel user:003 sex
(integer) 1
127.0.0.1:6379> hlen user:003
(integer) 2
127.0.0.1:6379> hget user:003 sex
(nil)
127.0.0.1:6379> hkeys user:003
1) "name"
2) "age"
127.0.0.1:6379> hvals user:003
1) "sinan"
2) "25"
hgetall 返回hash表中所有的key和value,一一相对应的,name->sinan,age->25
127.0.0.1:6379> hgetall user:003
1) "name"
2) "sinan"
3) "age"
4) "25"

//自增,自减同string的自增自减,hash中全部都是以h开头的,结构一样
  • 数据类型值列表(list)
栈和队列
先入后出 -> 栈,先入先出 -> 队列
List可以作为栈,也可以作为队列

lpush 从头部添加字符串元素(按照栈的方式取出(先入后出))
lrange 取出元素(从开始位置到结束位置,0 到 -1 就是全部取出)
127.0.0.1:6379> lpush list1 hello
(integer) 1        //当前list1中的元素个数
127.0.0.1:6379> lpush list1 world
(integer) 2
127.0.0.1:6379> lrange list1 0 -1
1) "world"
2) "hello"

rpush 从尾部添加字符串元素(按照队列的形式,先入先出)
127.0.0.1:6379> rpush list3 this_one
(integer) 1
127.0.0.1:6379> rpush list3 this_two
(integer) 2
127.0.0.1:6379> lrange list3 0 -1
1) "this_two"
2) "this_one"

Iinsert 在两个元素中压入一个新的元素 -> linsert 表名称(list4) before 在哪个元素后压入(开始的位置) 需要压入的元素(value)
127.0.0.1:6379> lpush list4 one
(integer) 1
127.0.0.1:6379> lpush list4 two
(integer) 2
127.0.0.1:6379> lrange list4 0 -1
1) "two"
2) "one"
127.0.0.1:6379> linsert list4 before one three
(integer) 3
127.0.0.1:6379> lrange list4 0 -1
1) "two"
2) "three"
3) "one"

lset 设置(替换)list中指定下标的元素 -> lset 表名称(list5) 更改的下标 更改的值(value)
127.0.0.1:6379> rpush list5 hello
(integer) 1
127.0.0.1:6379> rpush list5 wolrd
(integer) 2
127.0.0.1:6379> rpush list5 helloworld
(integer) 3
127.0.0.1:6379> lrange list5 0 -1
1) "hello"
2) "wolrd"
3) "helloworld"
127.0.0.1:6379> lset list5 1 save
OK
127.0.0.1:6379> lrange list5 0 -1
1) "hello"
2) "save"
3) "helloworld"

lrem 从key对应的list中删除n个和value相同的元素。其中(n<0从尾开始删除,n>0从头开始删除,n=0全部删除)
127.0.0.1:6379> lrange list5 0 -1
1) "hello"
2) "save"
3) "helloworld"
127.0.0.1:6379> lpush list5 hello
(integer) 4
127.0.0.1:6379> lpush list5 hello
(integer) 5
127.0.0.1:6379> lpush list5 hello
(integer) 6
127.0.0.1:6379> lrange list5 0 -1
1) "hello"
2) "hello"
3) "hello"
4) "hello"
5) "save"
6) "helloworld"
127.0.0.1:6379> lrem list5 3 hello
(integer) 3        //删除的个数
127.0.0.1:6379> lrange list5 0 -1
1) "hello"
2) "save"
3) "helloworld"

ltrim 保留指定key的值范围内的数据 -> ltrim list6 保留到开始的下标 保留到结束的下标
127.0.0.1:6379> rpush list6 one
(integer) 1
127.0.0.1:6379> rpush list6 two
(integer) 2
127.0.0.1:6379> rpush list6 three
(integer) 3
127.0.0.1:6379> lrange list6 0 -1
1) "one"
2) "two"
3) "three"
127.0.0.1:6379> ltrim list6 0 2
OK
127.0.0.1:6379> lrange list6 0 -1
1) "one"
2) "two"
3) "three"
127.0.0.1:6379> ltrim list6 1 2
OK
127.0.0.1:6379> lrange list6 0 -1
1) "two"
2) "three"


lpop 从list的头部删除元素,并返回删除的元素
rpop 从list的尾部删除元素,并返回删除的元素
127.0.0.1:6379> lrange list6 0 -1
1) "two"
2) "three"
3) "one"
4) "four"
127.0.0.1:6379> lpop list6
"two"    //从头部删除元素,返回删除的元素
127.0.0.1:6379> lrange list6 0 -1
1) "three"
2) "one"
3) "four"
127.0.0.1:6379> rpop list6
"four"    //从尾部删除元素,返回删除的元素
127.0.0.1:6379> lrange list6 0 -1
1) "three"
2) "one"


rpoplpush 从第一个list的尾部移除元素并添加到第二个list的头部 -> rpoplpush list5(开始) list6(结束)
127.0.0.1:6379> lrange list5 0 -1
1) "hello"
2) "save"
3) "helloworld"        //即将弹出
127.0.0.1:6379> lrange list6 0 -1
1) "three"        //即将压入
2) "one"
127.0.0.1:6379> rpoplpush list5 list6
"helloworld"        //弹出的元素
127.0.0.1:6379> lrange list5 0 -1
1) "hello"
2) "save"        //helloworld弹出
127.0.0.1:6379> lrange list6 0 -1
1) "helloworld"        //helloworld压入
2) "three"
3) "one"


lindex 返回名称为key的list中index位置的元素 lindex list6 查找的下标
127.0.0.1:6379> lrange list6 0 -1
1) "helloworld"
2) "three"
3) "one"
127.0.0.1:6379> lindex list6 0
"helloworld"
127.0.0.1:6379> lindex list6 1
"three"
127.0.0.1:6379> lindex list6 2
"one"

llen 返回list中的所有元素的个数
127.0.0.1:6379> lrange list6 0 -1
1) "helloworld"
2) "three"
3) "one"
127.0.0.1:6379> llen list6
(integer) 3
  • 数据类型之无序集合(set)
A:1,2    B:2,3
并集:1,2,3
交集:2
差集:1,3

sadd 向集合里添加元素,如果这个元素已经存在,则添加失败。
smembers 获取当前集合里所有的元素
127.0.0.1:6379> sadd set1 one
(integer) 1
127.0.0.1:6379> sadd set1 two
(integer) 1
127.0.0.1:6379> sadd set1 two
(integer) 0    //two已经存在,添加失败
127.0.0.1:6379> sadd set1 three
(integer) 1
127.0.0.1:6379> smembers set1
1) "two"
2) "one"
3) "three"
 
srem 删除集合里的元素,成功返回1,失败0
127.0.0.1:6379> smembers set1
1) "two"
2) "one"
3) "three"
127.0.0.1:6379> srem set1 three
(integer) 1
127.0.0.1:6379> smembers set1
1) "two"
2) "one"

spop 随机从集合里面弹出一个元素
127.0.0.1:6379> smembers set1
1) "two"
2) "one"
127.0.0.1:6379> spop set1
"one"
127.0.0.1:6379> spop set1
"two"
127.0.0.1:6379> spop set1
(nil)
127.0.0.1:6379> spop set1
(nil)


sdiff 返回两个集合的差集,左边为主
127.0.0.1:6379> smembers set1
1) "two"
2) "one"
127.0.0.1:6379> smembers set2
1) "two"
2) "three"
127.0.0.1:6379> sdiff set1 set2
1) "one"
127.0.0.1:6379> sdiff set2 set1
1) "three"


sdiffstore 返回两个集合的差集,并且将这个差集保存到一个新的集合里面去(set3就是新的集合)
127.0.0.1:6379> sadd set1 one
(integer) 1
127.0.0.1:6379> sadd set2 four
(integer) 1
127.0.0.1:6379> smembers set1
1) "three"
2) "two"
3) “one”
127.0.0.1:6379> smembers set2
1) "three"
2) "two"
2) “four”
127.0.0.1:6379> sdiffstore set3 set1 set2
(integer) 1
127.0.0.1:6379> smembers set3
1) "one"



sinter 返回给定key的交集
sinterstore 返回给定key的交集,并且将这个交集保存到一个新的集合里面去(set3就是新的集合)
127.0.0.1:6379> smembers set1
1) "one"
2) "three"
3) "two"
127.0.0.1:6379> smembers set2
1) "four"
2) "three"
3) "two"
127.0.0.1:6379> sinter set1 set2
1) "three"
2) "two"
127.0.0.1:6379> sinterstore set3 set1 set2
(integer) 2
127.0.0.1:6379> smembers set3
1) "two"
2) "three"


sunion 返回给定key的并集
sunionstore 返回给定key的并集,并且将这个并集保存到一个新的集合里面去(set4就是新的集合)
127.0.0.1:6379> smembers set1
1) "one"
2) "three"
3) "two"
127.0.0.1:6379> smembers set2
1) "four"
2) "three"
3) "two"
127.0.0.1:6379> sunion set1 set2
1) "four"
2) "two"
3) "three"
4) "one"
127.0.0.1:6379> sunionstore set4 set1 set2
(integer) 4
127.0.0.1:6379> smembers set4
1) "four"
2) "two"
3) "three"
4) "one"


smove 从第一个key对应的set中剪切一个元素,添加到第二个集合中
127.0.0.1:6379> smembers set5
1) "five"
127.0.0.1:6379> smembers set1
1) "one"
2) "three"
3) "two"
127.0.0.1:6379> smove set1 set5 one    //将set1中的元素one移动到set5中
(integer) 1
127.0.0.1:6379> smembers set5
1) "one"
2) "five"
127.0.0.1:6379> smembers set1
1) "three"
2) "two"

scard 查看该集合的元素个数
127.0.0.1:6379> smembers set1
1) "three"
2) "two"
127.0.0.1:6379> scard set1
(integer) 2


sismember 查看一个元素是否在这个集合中
127.0.0.1:6379> smembers set1
1) "three"
2) "two"
127.0.0.1:6379> sismember set1 two
(integer) 1


Srandmember 随机返回名称为key的集合的一个元素,不删除元素
127.0.0.1:6379> smembers set1
1) "three"
2) "two"
127.0.0.1:6379> srandmember set1
"two"
127.0.0.1:6379> srandmember set1
"two"
127.0.0.1:6379> srandmember set1
"two"
127.0.0.1:6379> srandmember set1
"three"
  • 数据类型之有序集合(zset)
zadd 添加一个元素到有素集合中,1代表位置,one是值,如果该值存在会覆盖
zrange 取元素,0,-1是全部取出,withscores是显示位置,不加不显示位置(升序)
127.0.0.1:6379> zadd zset1 1 one
(integer) 1
127.0.0.1:6379> zadd zset1 2 two
(integer) 1
127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "2"
127.0.0.1:6379> zrange zset1 0 -1
1) "one"
2) "two"

zrevrange  与zrange相反(降序)
127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "two"
2) "2"
3) "one"
4) "3"
127.0.0.1:6379> zrevrange zset1 0 -1 withscores
1) "one"
2) "3"
3) "two"
4) "2"

zrem 删除元素
127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "2"
127.0.0.1:6379> zrem zset1 two
(integer) 1
127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "one"
2) "1"

zincrby 增加顺序号,如果该值存在增加,不在就新增一个值
127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "2"
127.0.0.1:6379> zincrby zset1 2 one
"3"
127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "two"
2) "2"
3) "one"
4) "3"


Zrank 返回名称为key的zset中member元素的排名,下标从小到大排列(升序),返回就是当前元素的下标
127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "two"
2) "2"
3) "one"
4) "3"
127.0.0.1:6379> zrank zset1 one
(integer) 1        //下标为1

zrevrank 与zrank相反,按照降序排列,返回下表
127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "two"
2) "2"
3) "one"
4) "3"
127.0.0.1:6379> zrevrank zset1 one
(integer) 0

zrangebyscore 找到指定序号范围的元素,不是下标,2,3就是顺序为2和顺序为3的
127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "two"
2) "2"
3) "one"
4) "3"
5) "three"
6) "4"
7) "five"
8) "5"
127.0.0.1:6379> zrangebyscore zset1 2 3 withscores
1) "two"
2) "2"
3) "one"
4) "3"


Zcount 返回集合中给定区间的数量
127.0.0.1:6379> zcount zset1 2 5
(integer) 4
127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "two"
2) "2"
3) "one"
4) "3"
5) "three"
6) "4"
7) "five"
8) "5"


zcard 返回集合中所有元素个数
127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "two"
2) "2"
3) "one"
4) "3"
5) "three"
6) "4"
7) "five"
8) "5"
127.0.0.1:6379> zcard zset1
(integer) 4


zremrangebyrank 删除集合中排名在给定区间的元素(按照下标删除)
127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "two"
2) "2"
3) "one"        //下标是1
4) "3"
5) "three"
6) "4"
7) "five"
8) "5"
127.0.0.1:6379> zremrangebyrank zset1 1 1        //删除下标为1的元素
(integer) 1
127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "two"
2) "2"
3) "three"
4) "4"
5) "five"
6) "5"


zremrangebyscore 删除集合中给定区间的元素(按照序号删除)
127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "two"
2) "2"
3) "three"
4) "4"
5) "five"
6) "5"
127.0.0.1:6379> zremrangebyscore zset1 4 5        //删除序号为4和5的元素
(integer) 2
127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "two"
2) "2"
  • 常用操作
    给key设置过期时间
expire给key设置过期时间
ttl 查看过期的时间
exists 判断key是否存在
persist 取消过期时间
127.0.0.1:6379> set age 20
OK
127.0.0.1:6379> expire age 10
(integer) 1
127.0.0.1:6379> ttl age
(integer) 7
127.0.0.1:6379> ttl age
(integer) 4
127.0.0.1:6379> ttl age
(integer) 3
127.0.0.1:6379> ttl age
(integer) 2
127.0.0.1:6379> ttl age
(integer) 1
127.0.0.1:6379> ttl age
(integer) 0
127.0.0.1:6379> exists age
(integer) 0
127.0.0.1:6379> expire age 300
(integer) 1
127.0.0.1:6379> ttl age
(integer) 297
127.0.0.1:6379> ttl age
(integer) 296
127.0.0.1:6379> persist age
(integer) 1
127.0.0.1:6379> ttl age
(integer) -1    //-1已经取消过期时间,不是删除了key

选择数据库

Select 0 选择0数据库 ->    redis一共有16个库,分别是0-15
move 移动key到指定的数据库中
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
(empty array)
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> set age 20
OK
127.0.0.1:6379> get age
"20"
127.0.0.1:6379> move age 1
(integer) 1
127.0.0.1:6379> get age
(nil)
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
1) "age"
127.0.0.1:6379[1]> get age
"20"

key的操作

randomkey 随机返回当前库里面的一个key
127.0.0.1:6379> randomkey
"set2"
127.0.0.1:6379> randomkey
"zset"

rename 重命名key
127.0.0.1:6379> rename age age1
OK
127.0.0.1:6379> keys ag*
1) "age1"


type 返回一个键的数据类型
127.0.0.1:6379> type set1
set
127.0.0.1:6379> type list1
list


dbsize 返回当前数据所有key的数量
127.0.0.1:6379> dbsize
(integer) 25


info 查看redis的信息


config get * 实时传储收到的请求,返回当前的一些配置信息

flushdb 删除当前选择数据库中所有的key

flushall 删除所有数据库中所有的key

ishow.bind-time.com Copyright © 2020 小肥青王二狗

  Previous post mac安装swoole
Next post   redis高级应用

添加新评论

要铭记在心:每天都是一年中最美好的日子。

生活远没有咖啡那么苦涩,关键是喝它的人怎么品味!每个人都喜欢和向往随心所欲的生活,殊不知随心所欲根本不是生活。

如果错过了太阳时你流泪了,那么你也要错过群星了。

不如意的时候不要尽往悲伤里钻,想想有笑声的日子吧。

我不明白为什么要那么在意别人的看法,评头论足只是无聊人的消遣,何必看得如临大敌。如果你不吃别人家的饭,就别太把别人的话放在心上。