redis命令操作(初识二)

1.Redis数据结构

Redis是一种基于内存的数据库,并且提供一定的持久化功能,它是一种键值(key-value)数据库,使用 key 作为
索引找到当前缓存的数据,并且返回给程序调用者

当前的 Redis 支持 6 种数据类型,:

(1) 字符串类型 string
(2) 哈希类型 hash : map格式
(3) 列表类型 list : linkedlist格式。支持重复元素
(4) 集合类型 set : 不允许重复元素
(5) 有序集合类型 sortedset:不允许重复元素,且元素有顺序
(6)基数(HyperLogLog)

在这里插入图片描述
命令学习网站:http://doc.redisfans.com/index.html

2. 字符串类型 string

    1. 存储: set key value
	127.0.0.1:6379> set username zhangsan
	OK
   2. 获取: get key
   127.0.0.1:6379> get username
  "zhangsan"
  3.设置多个键语法: MSET key value [key value …]
  127.0.0.1:6379> mset k2 lisi k3 wangwu
  OK
  4.获取多个键值语法: MGET key [key …]
  127.0.0.1:6379> mget k2 k3
   "lisi"
   "wangwu"
   5. 删除: del key
   127.0.0.1:6379> del age
  (integer) 1

2.1字符串数字的递增与递减

递增数字:当存储的字符串是整数时,Redis提供了一个实用的命令INCR,其作用是让当前键值递增,并返回递增 后的值。

递增数字语法: INCR key
递减数值语法: DECR key
增加指定的整数语法: INCRBY key increment
减少指定的整数 语法:DECRBY key decrement

2.1.1递增

127.0.0.1:6379> incr num
(integer) 1
127.0.0.1:6379> incr num
(integer) 2

2.1.2递减

127.0.0.1:6379> decr num
(integer) 1

2.1.3指定步长:

127.0.0.1:6379> incrby num2 2
(integer) 2
127.0.0.1:6379> incrby num2 3
(integer) 5
127.0.0.1:6379> decrby num2 2
(integer) 3
127.0.0.1:6379> decrby num2 1
(integer) 2

3.Hash散列

hash叫散列类型,它提供了字段和字段值的映射。字段值只能是字符串类型,不支持散列类型、集合类型等其它类型。相当于是对象格式的存储

1.存储: hset key field value
设置一个字段值, HSET命令不区分插入和更新操作,当执行插入操作时HSET命令返回1,当执行更新操作时返回0

  127.0.0.1:6379> hset myhash username lisi1
  (integer) 1
  127.0.0.1:6379> hset myhash username lisi
  (integer) 0
  
  127.0.0.1:6379> hset myhash password 123
  (integer) 1

2.获取: hget key field: 获取指定的field对应的值

  127.0.0.1:6379> hget myhash username
  "lisi"

3.设置多个字段语法: HMSET key field value [field value …]

127.0.0.1:6379> hmset user1 password 123 age 20
OK

4.取多个值语法: HMGET key field [field …]

127.0.0.1:6379> hmget user1 password age
1) "123"
2) "20"

5.hgetall key:获取所有的field和value

127.0.0.1:6379> hgetall myhash
1) "username"
2) "lisi"
3) "password"
4) "123"

6.删除: hdel key field

127.0.0.1:6379> hdel myhash username
(integer) 1

4.队列List

Redis的list是采用来链表来存储,双向链表存储数据,特点:增删快、查询慢(Linkedlist).这个队列是有序的

  1. 添加:
    1. lpush key value: 将元素加入列表左表
    2. rpush key value:将元素加入列表右边
127.0.0.1:6379> lpush myList a
(integer) 1
127.0.0.1:6379> lpush myList b
(integer) 2
127.0.0.1:6379> rpush myList c
(integer) 3
  1. 获取:lrange key start end

lrange key start end :范围获取
将返回start、end之间的所有元素(包含两端的元素),索引从0开始,可以是负数,如:“-1”代表最后的一个元素

127.0.0.1:6379> lrange myList 0 -1
1) "b"
2) "a"
3) "c"
  1. 删除:
 lpop key: 删除列表最左边的元素,并将元素返回
 127.0.0.1:6379> lpop alist
 "123"
 rpop key: 删除列表最右边的元素,并将元素返回
 127.0.0.1:6379> rpop blist
 "345"

5.集合类型 set

Set集合类型:无序、不可重复

1. 存储:sadd key value
 127.0.0.1:6379> sadd myset a
 (integer) 1
 127.0.0.1:6379> sadd myset a
 (integer) 0
2. 获取:smembers key:获取set集合中所有元素
 127.0.0.1:6379> smembers myset
 1) "a"
3. 删除:srem key value:删除set集合中的某个元素	
127.0.0.1:6379> srem myset a
(integer) 1
4.  判断元素是否在集合中: SISMEMBER key member
127.0.0.1:6379> smembers ulist
1) "user3"
2) "user1"
127.0.0.1:6379> sismember ulist user2
(integer) 0
127.0.0.1:6379> sismember ulist user1
(integer) 1

6.有序集合类型 sortedset

有序集合类型sortedset:不允许重复元素,且元素有顺序.每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序

  1. 存储:zadd key score value
    向有序集合中加入一个元素和该元素的分数(score),如果该元素已经存在则会用新的分数替换原有的分数。
127.0.0.1:6379> zadd mysort 60 zhangsan
(integer) 1
127.0.0.1:6379> zadd mysort 50 lisi
(integer) 1
127.0.0.1:6379> zadd mysort 80 wangwu
(integer) 1
  1. 获取:zrange key start end [withscores]
    获得排名在某个范围的元素列表,并按照元素分数升序返回
127.0.0.1:6379> zrange mysort 0 -1
1) "lisi"
2) "zhangsan"
3) "wangwu"
127.0.0.1:6379> zrange mysort 0 -1 withscores
1) "zhangsan"
2) "60"
3) "wangwu"
4) "80"
5) "lisi"
6) "500"

2.1获得排名在某个范围的元素列表,并按照元素分数降序返回
语法:ZREVRANGE key start stop [WITHSCORES]

127.0.0.1:6379> zrevrange num1 0 4
1) "stu3"
2) "stu2"
3) "stu1"
4) "stu4"

2.2获取元素的分数 :ZSCORE key member

127.0.0.1:6379> zscore num1 stu2
"30"
  1. 删除:zrem key value
127.0.0.1:6379> zrem mysort lisi
(integer) 1

7.HyoperLogLog命令

HyperLogLog是一种使用随机化的算法,以少量内存提供集合中唯一元素数量的近似值。
HyperLogLog可以接受多个元素作为输入,并给出输入元素的基数估算值:

  • 基数:集合中不同元素的数量。比如 {‘apple’, ‘banana’, ‘cherry’, ‘banana’, ‘apple’} 的基数就是 3。
  • 估算值:算法给出的基数并不是精确的,可能会比实际稍微多一些或者稍微少一些,但会控制在合理的范围 之内。
  • HyperLogLog 的优点是,即使输入元素的数量或者体积非常非常大,计算基数所需的空间总是固定的、并且是很 小的。
  • 在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基数。这和计
    算基数时,元素越多耗费内存就越多的集合形成鲜明对比。
  • 但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像 集合那样,返回输入的各个元素。

HyperLogLog 相关的一些基本命令。

命令说明
PFADD key element [element …]将指定的元素添加到指定的HyperLogLog 中
PFCOUNT key [key …]返回给定 HyperLogLog 的基数估算值
PFMERGE destkey sourcekey [sourcekey …]将多个 HyperLogLog 合并为一个 HyperLogLog

示例:

redis 127.0.0.1:6379> PFADD mykey "redis"
1) (integer) 1
redis 127.0.0.1:6379> PFADD mykey "java"
1) (integer) 1
redis 127.0.0.1:6379> PFADD mykey "mysql"
1) (integer) 1
redis 127.0.0.1:6379> PFCOUNT mykey
(integer) 3

8.其他命令

(1) keys返回满足给定pattern 的所有key

keys user* //查询以user开头的key
keys * //查询所有的key

(2) exists确认一个key 是否存在,存在返回1

127.0.0.1:6379> exists num2 //语法:exists key
(integer) 1
127.0.0.1:6379> exists num23
(integer) 0

(3) del删除一个key

127.0.0.1:6379> del num1 //语法: del key 删除存在的key返回1,不存在的key返回0
(integer) 1
127.0.0.1:6379> del num23
(integer) 0

(4) rename重命名key:rename oldkey newkey

127.0.0.1:6379> rename k1 k11
OK
127.0.0.1:6379> keys *
1) "ulist"
2) "k2"
3) "user1"
4) "num2"
5) "clist"
6) "k11"

(5) type返回值的类型: type key

127.0.0.1:6379> type ulist
set
127.0.0.1:6379> type k11
string
127.0.0.1:6379> type alist
list

设置key的生存时间:缓存的数据一般都是需要设置生存时间的,即:到期后数据销毁。
(6) EXPIRE key seconds

设置key的生存时间(单位:秒)key在多少秒后会自动删除 TTL key 查看key剩余的生存时间 PERSIST key 清除生存时间

127.0.0.1:6379> set a1 123
OK
127.0.0.1:6379> get a1
"123"
127.0.0.1:6379> expire a1 60
(integer) 1
127.0.0.1:6379> ttl a1
(integer) 56
127.0.0.1:6379> ttl a1
(integer) 51
127.0.0.1:6379> ttl a1
(integer) 47

(7) 获取服务器信息和统计:info
(8) 删除当前选择数据库中的所有key:flushdb
(9) 删除所有数据库中的所有key:flushall

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值