티스토리 뷰

Server

Node js Redis 자료구조

니용 2021. 6. 15. 10:13
반응형

이전 글에서 Redis를 Node에 붙이는 방법을 보았다면 이번 글에서는 자료구조에 대해 설명하고자 합니다. 가장 먼저 String 에 대해 알아보겠습니다.

router.get('/string', async (req, res, next) => {
   let name = ''

   client.set('name', 'nyong')
   client.get('name', (err, data) => {
      console.log(data) // nyong
      name = data
   })
   
   res.render(name)
})

다음으로는 키-해시를 살펴봅시다. 객체를 저장한다고 보면 되며 hmset으로 설정하고 hgetall로 가져옵니다.

router.get('/hash', async (req, res, next) => {
   let obj
   
   client.hmset('friends', 'name', 'nyong', 'age', 30)
   client.hgetall('friends', (err, data) => {
      console.log(data) // { name : 'nyong', age : 30 }
      obj = data
   })
   
   res.json(data)
})

List 형태의 키-배열 구조로 이루어져 있으며 중복 데이터를 허용합니다. rpush는 JS의 push이며, lpush는 unshift와 비슷합니다. 가져올 때는 lrange 메소드를 사용하며, 0 과 -1은 시작과 끝 인덱스를 의미합니다. 

router.get('/list', async (req, res, next) => {
   let list = []
   
   // list
   client.rpush('fruits', 'apple', 'orange', 'pineapple')
   client.lpush('fruits', 'banana', 'pear')
   client.lrange('fruits', 0, -1, (err, arr) => {
      console.log(arr) // ['pear', 'banana', 'apple', 'orange', 'apple']
      list = arr
   })
   
   res.json(list)
})

Set 형태의 키-셋 구조로 이루어져있으며 배열과 비슷하지만 중복을 허용하지 않습니다. sadd로 set을 추가하고, smembers로 데이터를 가져옵니다.

router.get('/set', async (req, res, next) => {
   let set 
   
   client.sadd('fruits', 'apple', 'orange', 'pear', 'banana', 'apple')
   client.smembers('fruits', (err, set) => {
      console.log(arr) // ['banana', 'apple', 'orange', 'pear'] // apple은 2개여서 중복제거
      set = arr
   })
   
   res.send(set)
})

Sorted Set 형태의 키-정렬셋이며, 위와 다른 점은 순서를 정렬할 수 있습니다. zadd로 데이터를 set하고, zrange로 get합니다.

router.get('/sset', async (req, res, next) => {

   let ss 
   
   client.zadd('fruits', 1, 'apple', 5, 'orange', 3, 'pear', 4, 'banana', 8, 'grape')
   client.zrange('fruits', 0, -1, (err, set) => {
      console.log(arr) // ['apple', 'pear', 'banana', 'orange', 'grape']
      ss = arr
   })
   
   res.json(ss)
})

 

반응형
댓글
공지사항